Мне нужна небольшая помощь с некоторыми правилами mod_rewrite, которые я пытаюсь использовать. Мне нужно сделать 2 вещи
Изменить динамический URL-адрес, чтобы он был более дружественным (например, /content.php?CategoryID=1
изменить на /categories/1/
)
Удалите расширение .php
на моих страницах (например, /page2.php
до /page2
)
Хорошо, я могу заставить номер 1 работать самостоятельно со следующим в моем файле .htaccess:
Options +Indexes
Options +FollowSymlinks
RewriteEngine on
RewriteOptions Inherit
RewriteBase /
RewriteRule ^category/([0-9]+)?$ category/$1/ [R]
RewriteRule ^category/([0-9]+)/?$ content.php?CategoryID=$1
Я тогда пытаюсь номер 2, и у меня возникают некоторые проблемы. Я использую следующее:
RewriteCond %{THE_REQUEST} \ /(.+/)?index\.php(\?.*)?\ [NC]
RewriteRule ^(.+/)?index\.php$ /%1 [NC,R=301,L]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{SCRIPT_FILENAME} -f
RewriteCond %{REQUEST_URI} ^(/.+)\.php$
RewriteRule ^(.+)\.php$ %1/ [R=301,L]
RewriteCond %{REQUEST_URI} ^(/.+)/$
RewriteCond %{DOCUMENT_ROOT}%1.php -f
RewriteRule ^.+/$ %1.php [QSA,L]
Приведенный выше текст перезаписывает URL-адрес, чтобы он выглядел дружелюбно (например, /page2/
), но он попадает на мою страницу 404, и я не могу его просмотреть, но моя другая страница, на которой я переписываю URL, все еще работает (например, /category/1/
).
Это мой полный файл .htaccess:
Options +Indexes
Options +FollowSymlinks
RewriteEngine on
RewriteOptions Inherit
RewriteBase /
RewriteRule ^category/([0-9]+)?$ category/$1/ [R]
RewriteRule ^category/([0-9]+)/?$ content.php?CategoryID=$1
RewriteCond %{THE_REQUEST} \ /(.+/)?index\.php(\?.*)?\ [NC]
RewriteRule ^(.+/)?index\.php$ /%1 [NC,R=301,L]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{SCRIPT_FILENAME} -f
RewriteCond %{REQUEST_URI} ^(/.+)\.php$
RewriteRule ^(.+)\.php$ %1/ [R=301,L]
RewriteCond %{REQUEST_URI} ^(/.+)/$
RewriteCond %{DOCUMENT_ROOT}%1.php -f
RewriteRule ^.+/$ %1.php [QSA,L]
ErrorDocument 404 /misc/404page.html
Любая помощь будет принята с благодарностью, так как я новичок во всем этом mod_rewrite и регулярных выражениях.