У меня проблемы с моим индексом rewriterule и каталога
DirectoryIndex invite.php about.php account.php RewriteRule ^/?([a-z0-9_-]+)/?$ /user.php?u=$1 [L]
about.php
находится в папке about. Когда я перехожу на сайт www.url.com/about/about.php, он отлично работает. Но когда я www.url.com/about/
на сайт www.url.com/about/
, он переходит на мою страницу user.php
. Когда я www.url.com/about
на www.url.com/about
, (без окончания слэша), он отправляется на www.url/about/?u=about
Может кто-нибудь мне помочь?
В то же время я пытаюсь настроить, где пользователь может перейти на www.url.com/andrewliu
вместо www.url.com/user.php?u=andrewliu
Думаю, мне нужно как-то исправить мой косой черт и перенаправление?
Благодаря!
РЕДАКТИРОВАТЬ
у меня есть это
DirectoryIndex invite.php about.php account.php RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php RewriteRule ^/?([a-z0-9_-]+)/?$ /user.php?u=$1 [L] RewriteCond %{QUERY_STRING} !^b= [NC] RewriteRule ^(business)/(.*)$ /$1/index.php?b=$2 [L,NC,QSA]
Вам нужно добавить чек, чтобы узнать, существует ли запрос для файла или каталога, который существует. Вам необходимо добавить эти условия до вашего правила:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/?([a-z0-9_-]+)/?$ /user.php?u=$1 [L]
Это делает так, когда вы переходите в /about/
, так как это каталог, который существует, это правило не будет применяться. Но если вы перейдете к /andrewliu
, это будет так долго, пока это не файл или каталог.