Как переписать URL в .htaceess в WordPress для этого? - PullRequest
0 голосов
/ 07 декабря 2010

В WordPress я хочу http://www.example.com/domain/12345/ перенаправить на

http://www.example.com/page.php?a=domain&b=12345

Значение по умолчанию для .htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Я добавляю еще один оператор в конце IfModule, но он не работает

RewriteRule ^http://%{HTTP_HOST}%/(.*)/(.*)/$ page.php?a=$1&b=$2 [L,NC]

Что-то не так? (.htaccess находится в корневом каталоге WordPress)

Ответы [ 2 ]

2 голосов
/ 07 декабря 2010

[L] означает, что это последнее правило, которое должно быть обработано, если условия соответствуют.

Первое правило соответствует запросам на index.php и перенаправляет туда.

Второе правило сопоставляет запросы на что-либо еще, кроме существующего имени файла или каталога (с использованием двух условий), а затем перенаправляет на index.php и останавливает обработку.

Помещение RewriteRule ПЕРЕД двумя строками RewriteCond позволит проверить путь, соответствующий регулярному выражению, и перенаправить на page.php. Вы должны будете изменить свое регулярное выражение, чтобы продолжать использовать постоянную переписку WordPress, хотя правило /(.)/(.)/ слишком общее и будет соответствовать практически чему угодно.

1 голос
/ 07 декабря 2010

Просто чтобы быть уверенным.В Wordpress вы можете нажать «Постоянные ссылки» в разделе «Настройки» в админке и полностью контролировать свои URL.Это создаст динамические правила для управления перезаписью.

Если это то, что вам нужно сделать по другой причине, настройте свой код следующим образом:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^http://%{HTTP_HOST}%/(.*)/(.*)/$ page.php?a=$1&b=$2 [L,NC]

RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Если вы поместите туда rewriterule,ваш файл htaccess доступен для записи скриптом, эта строка будет перезаписана, если вы позже обновите постоянные ссылки в wp.

...