Как заставить .htaccess работать с текущим каталогом, а не с подкаталогами?

StackOverflow https://stackoverflow.com/questions/1200348

  •  05-07-2019
  •  | 
  •  

Вопрос

Я использую mod rewrite для косвенного доступа к моим PHP-файлам в корневом каталоге моего сайта. В настоящее время у меня есть что-то вроде этого,

RewriteRule ^(blog|about|page3|etc)$ /$1.php [L]

Но я хотел бы использовать это

RewriteRule ^(.*)$ /$1.php [L]

Чтобы мне не пришлось обновлять свой файл .htaccess всякий раз, когда я хочу добавить новую страницу на свой веб-сайт. Однако проблема в том, что это влияет и на мои подкаталоги. Что делает CSS, javascript, изображения недоступными, потому что он перенаправляет на /dir/example.png.php".

Так что же является лучшим решением здесь?

Это было полезно?

Решение

Попробуйте это правило:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule .* <*>.php [L]

Другие советы

Измените .htaccess на это:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /$1.php [L]

После запуска механизма перезаписи он сначала проверит, является ли запрошенный файл действительным файлом в системе или каталогом. Если это не один из них, он выполнит правило, которое в данном случае состоит в том, чтобы попытаться найти файл, добавив .php и обработав его.

Подкаталоги, изображения, CSS и т. п. будут в порядке, потому что они выйдут из процесса перезаписи, как только будут найдены.

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

Следующее будет игнорировать " изображения " и " js " вложенные папки и перенаправить все остальное

RewriteRule   ^images*   -  [L]
RewriteRule   ^js*       -  [L]
RewriteRule   ^(.*)$     /$1.php   [L]

Примерно так (обратите внимание!):

RewriteRule !\.(js|ico|gif|jpg|png|css|zip|gz|html|xml)$ index.php
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top