wordpress: mod_rewrite первое имя "папки" в качестве параметра get - PullRequest
0 голосов
/ 18 января 2012

Я установил структуру постоянных ссылок wordpress, чтобы просто использовать articlename, и получил .htaccess, который выглядит так

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

отлично работает.

, но я хочу различатьразличные местоположения (например, Берлин, Гамбург или Мюнхен) в моих различных файлах шаблонов.поэтому я решил добавить местоположение к URL-адресу следующим образом:

http://myurl.com/berlin/articlename

, и теперь мне нужно переписать это в

http://myurl.com/articlename?location=berlin

, но

http://myurl.com/articlename

или

http://myurl.com/category/articlename

должны работать.просто найдите предопределенные местоположения (berlin | hamburg | muenchen).

как мне настроить вышеуказанный RewriteRule для этого?

Ответы [ 2 ]

0 голосов
/ 25 января 2012

Я исправил это с помощью следующих дополнений в файле .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} !location
RewriteRule ^(muenchen|berlin)/$ /index.php?location=$1 [NC,QSA,P]

RewriteCond %{QUERY_STRING} !location
RewriteRule ^(muenchen|berlin)/(.*)$ /$2?location=$1 [NC,QSA,P]

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>
0 голосов
/ 18 января 2012

Таким образом, если в основном вы запрашиваете, что http://myurl.com/(word1)/(word2)/ (то есть соответствует только точно два слова, не меньше и не больше) внутренне переписывается на стороне сервера http://myurl.com/(word2)?location=(word1) тогда вот оно:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule /([^/]+)/([^/]+)/$ /$2?location=$1 [QSA,L]

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