mod_rewrite - дружественные URL и удаление расширения страницы - PullRequest
1 голос
/ 04 сентября 2010

Мне нужна небольшая помощь с некоторыми правилами mod_rewrite, которые я пытаюсь использовать. Мне нужно сделать 2 вещи

  1. Изменить динамический URL-адрес, чтобы он был более дружественным (например, /content.php?CategoryID=1 изменить на /categories/1/)

  2. Удалите расширение .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 и регулярных выражениях.

1 Ответ

0 голосов
/ 12 октября 2010

Я знаю, что это было давно, и я не на 100% уверен, что вы пытались сделать, но я, вероятно, посмотрю на:.htaccess более тесно и / или иметь лучшее представление о структуре вашего сайта, чтобы предоставить более полную информацию.

...