Правило mod_rewrite для удаления comment.php - PullRequest
1 голос
/ 07 февраля 2012

Мне нужно перенаправить

mysite.com/comment.php?id=sasdfkjsfj

на

mysite.com/sasdfkjsfj.

Сейчас я использую этот код для этого

RewriteEngine on
RewriteBase / 

#redirect to remove comment.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /comment\.php\?id=([^\ &]+) [NC]  
RewriteRule ^ %1? [L,R=301] 

#process the SEF Url with comment.php
RewriteRule ^([-a-zA-Z]+)$ comment.php?id=$1 [L]

ИзмененияURL-адрес

mysite.com/sasdfkjsfj.

, но это приводит к ошибке 404 страницы.У меня есть отдельная страница comment.php, которая выполняет эту работу для

 mysite.com/comment.php?id=sasdfkjsfj

, где я получаю идентификатор по $ _GET ['id'] из URL, но теперь, как обработать

mysite.com/sasdfkjsfj

после перенаправления.

А также какие изменения я должен сделать для этого типа URL

mysite.com/sasdfkjsfj/Url_redirect_option.

1 Ответ

1 голос
/ 07 февраля 2012

Я просто собираюсь предположить, что вы хотите перенаправить mysite.com/sasdfkjsfj на mysite.com/comment.php?id=sasdfkjsfj; почитание будет необычным.

Добавьте следующий .htaccess в базовый веб-каталог или в свою конфигурацию apache:

<IfModule mod_rewrite.c>
RewriteEngine On
# if you want to use /comment/ as a base dir, as suggested by ThinkingMonkey
# then you could use this instead
# RewriteRule ^comment/([a-zA-Z0-9_]+)$ /comment.php?id=$1 [L]

# look for "mysite.com/anyasciichars" without a . or a /
# the [L] means this is the last rule processed (if it matches)
RewriteRule ^([a-zA-Z0-9_]+)$ /comment.php?id=$1 [L]
</IfModule>

Чтобы обработать случай mysite.com/sasdfkjsfj/rewrite_rule, сделайте что-то вроде этого:

<IfModule mod_rewrite.c>
RewriteEngine On
# look for "mysite.com/anyasciichars/rewrite_rule"
# the [L] means this is the last rule processed (if it matches)
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)$ /comment.php?id=$1&rule=$2 [L]
</IfModule>
...