Почему эта перезапись мода в другой каталог не работает? - PullRequest
2 голосов
/ 20 марта 2012

У меня есть ссылка на главной странице на

www.example.com/test

У меня есть страница в каталоге страниц, которая называется test.php

Вот как выглядит мой .htaccess:

RewriteBase /
RewriteEngine on  
RewriteCond pages/%{REQUEST_FILENAME}.php -f [NC]
RewriteRule ^(.*?)$ pages/$1.php

Теперь я могу заставить его работать с RewriteRule ^test$ pages/test.php, но как только я введу регулярное выражение, оно не будет работать.Кроме того, правило RewriteCond, похоже, тоже не работает.Какие решения вы можете придумать?Я попытался добавить Options +FollowSymlinks -MultiViews, но это не сработало.

update

Если я добавлю test.php в основной каталог, то изменим RewriteCond pages/%{REQUEST_FILENAME}.php -f [NC] на RewriteCond %{REQUEST_FILENAME}.php -f [NC], затемработает;вот в чем проблема.

Не могу понять, как проверить, существует ли файл в каталоге pages.

1 Ответ

1 голос
/ 21 марта 2012

REQUEST_FILENAME - полный сервер путь. Поэтому, если корневой путь к вашему документу /home/website/public/, вы пытаетесь проверить, существует ли pages/home/website/public/test.php, чего, конечно, нет.

Вот правила, которые вы хотите.

RewriteBase /
RewriteEngine on  
RewriteCond %{DOCUMENT_ROOT}/pages/%{REQUEST_URI}.php -f [NC]
RewriteRule ^(.*?)$ pages/$1.php
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...