.htaccess: проблема с перезаписью URL - PullRequest
1 голос
/ 12 июля 2010

Я новичок в переписывании URL, и у меня возникла проблема, которую я не могу понять.

Я получил 2 условия:

RewriteRule ([^/]+).php index.php?com=cat&catname=$1 [L]
RewriteRule ([^/]+)/([^/]+).php index.php?com=detail&catname=$1prodname=$2 [L]

и нужно 2 URL, как это:

website.com/category-name.php
website.com/category-name/product-name.php

Кажется, что первое условие действует на второе ... я имею в виду: если я вызываю первый URL, все работает нормально, но когда я вызываю второй URL, я не могу получить переменные так, как хочу всегда «cat» и «catname» получают значение $ 2)

Заранее спасибо!

1 Ответ

3 голосов
/ 12 июля 2010

URL-адреса, соответствующие второму правилу, также будут соответствовать первому правилу.Поскольку первое правило помечено буквой «L», второе правило никогда не будет применено.

Возможно, вам следует сопоставлять абсолютные URL-адреса - начинайте регулярное выражение с ^/, чтобы соответствовать началу URL-адреса, и заканчивайте его$, чтобы соответствовать концу URL.Помните, что правила перезаписи применяются к пути URL (все, что следует за website.com, включая косую черту).

Например (конечно, это не проверялось):

# Example: website.com/books.php -> website.com/index.php?com=cat&catname=books
RewriteRule ^/([^/]+).php$ /index.php?com=cat&catname=$1 [L]
# Example: website.com/books/java.php -> website.com/index.php?com=detail&catname=books&prodname=java
RewriteRule ^/([^/]+)/([^/]+).php$ /index.php?com=detail&catname=$1prodname=$2 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...