Имам уебсайт с CMS, който използва mod_rewriteда направи URL-ите по-чисти. Преди това чистите URL адреси имаха разширение .htm, но искам да го прехвърля към тях, които се показват като фалшиви поддиректории, т.е.
http://www.example.com/pagename/
Имам две правила за пренаписване, за да препиша старата схема и потенциалната нова:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+).htm$ index.php?page=$1 [QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ index.php?page=$1 [QSA]
Моят проблем е, че правилото, което се опитах да използвам за пренасочване на стари URL адреси към нови, не прави нищо.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+).htm$ $1/ [R=302,NC,QSA]
Отговори:
1 за отговор № 1Не можете да използвате две правила със същия моделтъй като ще се прилага само първата от тях. Опитайте се да замените правилото си „rewrite“ с новото правило „пренасочване“, за да пренасочите старите URL адреси вместо просто пренаписани:
# redirect foo.htm to foo/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+).htm$ $1/ [R=301,NC]
# rewrite foo/ to index.php?page=foo
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ index.php?page=$1 [QSA]