Расширенное правило переписывания Htaccess для PHP - PullRequest
3 голосов
/ 23 февраля 2010

В настоящее время у меня есть следующий код, чтобы переписать URL-адреса, удобные для поисковых систем, на что-то, с чем может справиться PHP, однако есть несколько проблем.

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*)/(.*) index.php?$1/$2

Это переписывает domain.com/cat/mens/size/large/ в domain.com/index.php?cat/mens/size/large/.


Было бы идеально, если бы я мог переписать это что-то вроде этого, используя различное количество подкаталогов, таких как это, что более дружественно к коду PHP:

Идеально переписать: domain.com/index.php?cat=mens&size=large

Другой пример: domain.com/page/value/subpage/subvalue/something/true/

следует переписать на: domain.com/index.php?page=value&subpage=subvalue&something=true


Также есть способ переписать: domain.com/search/?q=blah+blah

Кому: domain.com/index.php?search&q=blah+blah

1 Ответ

2 голосов
/ 23 февраля 2010

Попробуйте это:

RewriteRule /page/(.*)/subpage/(.*)/something/(.*) index.php?page=$1&subpage=$2&something=$3

Если количество переменных в URL-адресе не определено заранее, лучше просто передать его в виде строки в php и позволить ему обработать его (взорваться, взорваться, foreach, построить массив).

RewriteRule /search/?q=(.*) index.php?search&q=$1

Что касается того, что вы просили ниже:

RewriteRule /cat/(.*)/size/(.*)/?q=(.*)&abc=(.*) index.php?search&cat=$1&size=$2&q=$3&abc=$4

По сути, первая часть RewriteRule - это заданный URL, вторая часть - это та, которая относится к сценарию. Каждое (SomeInHere) в первой переменной, которую вы можете использовать во второй, например, $ 1, $ 2, $ 3 и $ 4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...