.htaccess RewriteRule запрос не работает - PullRequest
0 голосов
/ 31 октября 2018

Я не могу заставить работать RewriteRule.

У меня есть запрос PHP SQL для отображения веб-страницы. Требуется правило RewriteRule, которого я пытаюсь достичь в файле .htaccess.

Вот полный URL на данный момент.

www.example.com/category/sub-cat/page.php?art_url=a-page-of-mine

Я не могу заставить это сделать

www.example.com/category/sub-cat/a-page-of-mine

Мой код ниже:

Options +MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

ErrorDocument 404 /error-404.php
#error 404
RewriteRule    ^error/?$    error-404.php    [NC,L]
    RewriteRule    ^category/sub-cat/(0-9a-zA-Z]+) category/sub-cat/page.php?art_url=$1   [NC,L]

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

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

КАК я сказал в комментариях

Здесь пропущено несколько вещей (0-9a-zA-Z]+) вроде [- как в ([-0-9a-zA-Z]+)

Это тебя тоже укусит ...

RewriteRule ^([^\.]+)$ $1.php [NC,L]

Сопоставьте все, что не имеет точки, и добавьте к ней .php с последним флагом [L]. Могу поспорить, что он никогда не пройдет этого.

Как правило, вы хотите сначала более конкретные правила, а затем более общие правила.

Кроме того, если я правильно помню NC, я не имею в виду, так что вы можете избавиться от A-Z и просто сделать [-a-z0-9]+

Лучший способ

Я стараюсь избегать переписывания строк запроса и полагаюсь на метод переписывания URI, распространенный в средах MVC

  example.com/index.php/category/sub-cat/a-page-of-mine

А затем используйте маршрутизатор и HTACCESS, чтобы удалить только index.php, так намного проще.

На моей странице GitHub есть довольно простой маршрутизатор, который показывает, как маршрутизировать URL-адреса.

https://github.com/ArtisticPhoenix/MISC/tree/master/Router

Одна большая проблема, связанная с путаницей со строкой запроса, заключается в том, что вы можете потерять возможность использовать $_GET так, как она предназначена для таких вещей, как формы поиска и т. Д. Так что лучше маршрутизировать, а не переписывать. Кроме того, способ MVC дает вам единую точку входа для всех запросов, через которые можно упростить управление такими вещами, как константы и автозагрузчики ....

0 голосов
/ 23 ноября 2018

правый. Чтобы это работало, мне нужно было добавить QSA, как в [QSA, NC, L]. Через сколько недель !! ??

0 голосов
/ 31 октября 2018

Ну что ж, конечно, это сломано:

(0-9a-zA-Z]+)

Charclass не имеет открывающего [ и не содержит / соответствует литералу -.

...