Mod_rewrite динамические URL-адреса - PullRequest
0 голосов
/ 04 июня 2011

Пример того, чего я пытаюсь достичь, я хочу переписать

www.website.com / index.php
www.website.com

и

www.website.com / index.php? Страница = первая
www.website.com/first

но также

www.website.com / index.php? Категория = кошка и страница = вторая
www.website.com/cat/second

Большое спасибо

Ответы [ 2 ]

3 голосов
/ 04 июня 2011

Вы 100% уверены, что хотите сделать переписывание таким образом? Похоже, это обратный путь к тому, как вы обычно переписываете настройки. Проверьте этот вопрос и первый ответ , чтобы понять, что я имею в виду.

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

http://www.website.com/cat/second

и что вы хотите, чтобы ваше php-приложение затем получило :

http://www.website.com/index.php?category=cat&page=second

В этом случае вы хотели бы что-то вроде

 <IfModule mod_rewrite.c>
RewriteEngine On
# note this first rewrite would be redundant in 99.999% of cases, apache expects to serve index.php for the /
RewriteRule ^/$ /index.php [last]
RewriteRule ^(.*)$ /index.php?page=$1 [last]
RewriteRule ^(.*)/(.*)$ /index.php?category=$1&page=$2 [nocase,last]
</IfModule>

Если я не прав, то Иван c00kiemon5ter V Ответ Канака сделает вас правильно. И тогда мне также любопытно, в какой ситуации вы находитесь, где вы хотите сделать «анти-переписывание»:)

2 голосов
/ 04 июня 2011

попробуйте что-то вроде этого

<IfModule mod_rewrite.c>
    RewriteEngine On
    # you may want to check other uses of R
    RewriteRule ^/index.php$ / [R=301,L]
    RewriteRule ^/index.php?page=(.*) /$1 [R=301,L]
    RewriteRule ^/index.php?category=(.*)&page=(.*) /$1/$2 [R=301,L]
</IfModule>

Вероятно, вы можете поместить последние два в одну строку, играя регулярные выражения. Также см. этот вопрос , и вы можете поискать ServerFault для получения дополнительной информации. Вокруг много таких вопросов.

...