Сопоставить файлы в подкаталоге с корневой папкой через .htaccess - PullRequest
1 голос
/ 27 октября 2011

У меня есть большое количество файлов в подкаталоге. Я хотел бы сопоставить эти файлы с корневым каталогом так, чтобы запрос "http://www.mysite.com/filename" фактически указывал на" http://www.mysite.com/subfolder/filename.php" на сервере. Я хотел бы удалить ссылку на подпапку.

Обратите внимание, что я хотел бы добавить суффикс "php" в файл htaccess. У меня также есть относительно большое количество файлов в корневом каталоге (включая «О», «Контакты» и т. Д.) И несколько других папок, поэтому перезапись базы невозможна.

В идеале для каждого запроса я хотел бы проверить, существует ли файл в корневой папке, и если нет, то сопоставить с подпапкой. Я попробовал следующее, но не смог сопоставить файл с подпапкой, не говоря уже о том, чтобы проверить, существует ли он первым.

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 Ответ

1 голос
/ 27 октября 2011

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.

...