我将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/category/articlename
应该仍然有效。只需寻找预定义的位置(柏林|汉堡|慕尼黑)。
我如何调整上面的RewriteRule来实现这个目标?
答案 0 :(得分:0)
所以基本上,如果您要求的是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>
答案 1 :(得分:0)
我通过对.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>