#.htaccess #mod-rewrite #apache2
#.htaccess #переписать мод #apache2
Вопрос:
У меня большое количество файлов в подкаталоге. Я хотел бы сопоставить эти файлы с корневым каталогом, чтобы запрос на «http://www.mysite.com/filename » на самом деле указывает на «http://www.mysite.com/subfolder/filename.php » на сервере. Я хотел бы удалить ссылку на подпапку.
Обратите внимание, что я также хотел бы добавить суффикс «php» в файл htaccess. У меня также есть относительно большое количество файлов в корневом каталоге (включая About, Contact и т. Д.) И Пару других папок, Поэтому перезапись базы не является жизнеспособным вариантом.
В идеале, для каждого запроса я бы проверял, существует ли файл в корневой папке, и если нет, то сопоставьте с подпапкой. Я попробовал следующее, но не смог сопоставить файл с подпапкой, не говоря уже о том, чтобы сначала проверить, существует ли он.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
# works fine if not commented:
# RewriteRule ^(.*)$ $1.php
# try pointing to subfolder instead does not work
RewriteRule ^(.*)$ folder/$1.php
Спасибо за любой совет. План Б — просто оставить имя папки в URL, но я был бы рад найти более элегантное решение и более короткий и прямой URL.
Ответ №1:
2-е условие перезаписи не сработает, потому что вы не смотрите внутрь «папки», попробуйте что-то вроде этого:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/folder%{REQUEST_URI}.php -f
RewriteRule ^(.*)$ folder/$1.php
Если корень вашего документа был чем-то вроде /htdocs
, тогда вы проверяли /htdocs/filename.php
, существует ли файл, когда я думаю, что вы хотите проверить, /htdocs/folder/filename.php
существует ли он.