【问题标题】:wordpress: mod_rewrite first "folder" name as a get parameterwordpress:mod_rewrite 第一个“文件夹”名称作为获取参数
【发布时间】:2012-01-26 01:07:50
【问题描述】:

我将 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

应该仍然有效。只需查找预定义的位置(柏林|汉堡|慕尼黑)。

我需要如何调整上面的 RewriteRule 来完成这个?

【问题讨论】:

    标签: apache wordpress mod-rewrite url-rewriting


    【解决方案1】:

    所以基本上,如果您要求的是 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>
    

    【讨论】:

    • 不完全 - 仅在 (word1) 是柏林或汉堡时重写 - 否则保持 URL 不变。
    【解决方案2】:

    我在.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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-13
      • 2016-12-18
      • 2016-10-14
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多