با سلام می دانیم که برای تبدیل یک ادرس در .httacess باید کد زیر را بزنیم
RewriteRule ^index2.html$ ./index2.php [L,NC]
ولی اینطوری باید برای تک تک ادرس های سایت این کد رو بنویسیم
می خواستم با کدی تمام صفحات رو که با php هستند به html تبدیل کنم
Printable View
با سلام می دانیم که برای تبدیل یک ادرس در .httacess باید کد زیر را بزنیم
RewriteRule ^index2.html$ ./index2.php [L,NC]
ولی اینطوری باید برای تک تک ادرس های سایت این کد رو بنویسیم
می خواستم با کدی تمام صفحات رو که با php هستند به html تبدیل کنم
درود بر شما
چطور میشه ادرس صفحات رو تغییر داد؟
مثلا پیجی داریم به نام https://domain.ir/Contact.php
چطور میشه اونو به :https://domain.ir/تماس با ما
تغییر داد؟
و همچنین ما بقی پیج هارو
سپاس فراوان از شما
وقت بخیر
بستگی به ساختار برنامه شما داره. اما بصورت کلی بهتره مدیریت مسیرها (routes) در داخل برنامه انجام شود. بنابراین هر url ای که مجازی باشد (متناسب با آدرس، فایل یا پوشه ای روی هاست وجود نداشته باشد) به یک فایل مثلا index.php هدایت می کنیم. در ابتدای این فایل url درخواستی از متغیر $_SERVER['REQUEST_URI'] خوانده شده و با مسیرهایی که از پیش تعریف کرده اید مطابقت داده می شود. شما میتوانید مسیرهای خود را در یک آرایه ذخیره کنید و یا آنها را در دیتابیس درج کنید.
#.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
index.php
$URI = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$URI = explode('/', $URI);
$URI = array_values(array_filter($URI));//remove empty values
$routes = array(
'تماس-با-ما' => 'contact.php',
'درباره-ما' => 'about.php',
);
$file = 'main.php';
if(count($URI)>0 && array_key_exists($URI[0], $routes)){
$file = $routes[$URI[0]];
}
include($file);
هدف از این کدها تنها آشنایی شما با مسیرها است و بسته به ساختار برنامه شما نیاز به تغییر دارد.
در ضمن اگر عنوان صفحه شما «تماس با ما» باشد برای خوانایی بیشتر باید فاصله را به خط تیره تبدیل کنید همچنین برخی کاراکترها در url مجاز نمی باشند. بنابراین برای ساخت slug نیاز به یک تابع دارید که کافیست php slug generator را در گوگل جستجو کنید.