Intereting Posts
Как отсортировать массив в порядке убывания на основе определенного значения Что означает * в регулярном выражении в PHP? Как читать строку SVG в Imagick? Как передать переменные GET в php-файл с помощью Shell? декодирование вывода JSON из API-интерфейса переводчика Microsoft с помощью PHP IP-адрес WordPress изменен Как написать регулярное выражение для поиска одного каталога в URL-адресе? Чат в реальном времени, обработка сообщений – Socket.io, PHP, MySQL, Apache Простой субдомен перенаправления PHP Как я могу загрузить доступ к файлам вне каталога public_html? php reflection получает свойства без получения свойств базового класса Попытка захватить число после определенной строки в содержимом вызова с помощью curl Ошибка HTACCESS 404 не работает должным образом «Неверные параметры для исключения» при создании подкласса «Исключение» Триггер событий в javascript и условном теге

Почему, если я помещаю «-» тире в правило в моем htaccess, не работает?

У меня есть следующие правила: один «наш магазин» перенаправляет в другое место, чем другие правила «PLAIN PAGES»:

Options +FollowSymlinks RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RedirectMatch 302 /construction.html http://www.{website}.com/construction-services RedirectMatch 302 /construction/endless-pools.html http://www.{website}.com/construction-services/endless-pools # PRODUCT AND SERVICES RewriteCond %{REQUEST_URI} !\.html$ RewriteRule ^(.*)/(.*)$ /rewrite.php?sub=$1&second=$2 [NC] # PLAIN PAGES #RewriteRule ^/$ /index.php [L,NC] RewriteRule ^signup-free$ /signup-free.php [L,NC] RewriteRule ^about$ /content.php?page=1 [L,NC] RewriteRule ^links$ /content.php?page=2 [L,NC] RewriteRule ^portfolio$ /portfolio.php [L,NC] RewriteRule ^our-stores$ /our-stores.php [L,NC] RewriteRule ^contact$ /contact.php [L,NC] RewriteRule ^products-list$ /lists.php?action=products [L,NC] RewriteRule ^services-list$ /lists.php?action=services [L,NC] 

Когда я печатаю /our-stores apache перенаправляет на: /our-stores/?sub=our-stores&second=

Я не понимаю, потому что остальные (без регистрации, о, ссылки, портфолио … и т. Д.) Работают нормально.

Может ли кто-нибудь помочь мне с этим?

Спасибо.

Общее правило было перенесено в нижнее положение, а условия REQUEST_FILENAME переместились под статические перенаправления. Кроме того, я добавил /? чтобы сопоставить необязательную конечную косую черту для каждой конкретной переадресации. Наконец, общее правило улучшено не для использования .* , А скорее для соответствия всем до первого / менее жадным способом. Затем он использует .+ После / чтобы убедиться, что присутствует хотя бы один символ. Таким образом, URL-адреса с конечной косой чертой не совпадают. Если у вас есть какие-то дженерики без second= , вернитесь к .* .

Все они работают правильно в тесте htaccess.

 RedirectMatch 302 /construction.html http://www.{website}.com/construction-services RedirectMatch 302 /construction/endless-pools.html http://www.{website}.com/construction-services/endless-pools RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^signup-free/?$ /signup-free.php [L,NC] RewriteRule ^about/?$ /content.php?page=1 [L,NC] RewriteRule ^links/?$ /content.php?page=2 [L,NC] RewriteRule ^portfolio/?$ /portfolio.php [L,NC] RewriteRule ^our-stores/?$ /our-stores.php [L,NC] RewriteRule ^contact/?$ /contact.php [L,NC] RewriteRule ^products-list/?$ /lists.php?action=products [L,NC] RewriteRule ^services-list/?$ /lists.php?action=services [L,NC] # PRODUCT AND SERVICES RewriteCond %{REQUEST_URI} !\.html$ RewriteRule ^([^/]+)/(.+)$ /rewrite.php?sub=$1&second=$2 [NC] 

Знак «-» является специальным символом в регулярном выражении. Он определяет диапазон (az, à-9 и т. Д.).

Попытайтесь избежать этого.

 RewriteRule ^our\-stores$ /our-stores.php [L,NC] 

Я подозреваю, что у вас есть фактический файл (или, скорее, пустой каталог) с именем our-stores .

Это вызовет RewriteCond %{REQUEST_FILENAME} !-d , в результате чего он не будет переписываться.

Затем он попытается загрузить страницу по умолчанию из этого каталога (например, index.php), которая не существует, и поэтому она попытается переписать это, в результате чего добавятся добавленные опции ?sub=our-stores&second= .