#.htaccess #mod-rewrite #url-rewriting
#.htaccess #mod-перезапись #url-перезапись
Вопрос:
Я использую несколько динамических страниц для каждого файла .html в моем корне.
Со следующей строкой:
RewriteRule ^(.*).html content.php?alias=$1 [L]
Это работает нормально, но у меня также есть несколько других веб-сайтов в том же месте, всего в нескольких папках. Я не хочу, чтобы они прослушивали эту строку, каждый раз, когда я создаю файл .html, я получаю перенаправление на content.php в моем корне.
Пример:
Расположение моего content.php:
public_html/Website/content.php
public_html/Website/_intern/websites/index.html
Указанный выше файл перенаправляется на content.php в моем корне.
Как я могу предотвратить это?
Ответ №1:
Настройте свое регулярное выражение. Вместо .*
того, что соответствует чему-либо, что вы должны использовать [^/]
, чтобы соответствовать чему-либо, кроме /
. Это гарантирует, что вы ничего не выбираете в подкаталогах:
RewriteRule ^([^/] ).html$ content.php?alias=$1 [L,QSA,NC]
Комментарии:
1. Я думаю, что это так, но у меня есть другой mod rewrite, который перенаправляет URL-адреса с помощью _ to content.php Тот, который я тестирую, имеет символ подчеркивания, так как же мне изменить строку для работы с символами подчеркивания? Нравится это? :
^([_^/] ).html$ content.php?alias=$1 [L,QSA,NC]
2. Если я правильно понял, ваша строка не должна прослушивать какие-либо подкаталоги, но _intern — это подкаталог, который все еще прослушивает:
RewriteRule ^_(.*)/(.*).html /lp.php?alias=$2 [L]
даже если он идет после вашей строки.3. Вы должны сначала опубликовать свой существующий .htaccess, о котором идет речь, чтобы я мог дать вам соответствующий совет. Также скажите мне, что такое full UR, который вы используете для тестирования, а что не работает?