WordPress网站上的htaccess

时间:2012-09-29 20:57:00

标签: wordpress .htaccess redirect

我一直在试图解决wordpress网络网站上的htaccess问题,并且我从过去的stackoverflow获得了很多信息,我认为这将是最好的地方。如果我没有正确发布,那就是我的第一次道歉。

以下是我的设置细节(我无法显示或允许访问该网站,因为我同意了各种NDA)

  1. 有2个网站。第一个是根网站“/”,第二个是“/ mythoughts /”,如网络管理员所示。
  2. “/ mythoughts /”网站取代了某人使用网址中的变量构建的旧自定义博客(自定义)
  3. 我正在使用的主题是二十和根(显然根在网络设置中没有做整理的URL重写)
  4. 问题是这个。

    首先“将index.php从网址中删除(这不是问题,但我认为当我尝试进行其他重写时可能会出现问题。)

    第二,旧网站在2个实例的网址中有变量。

    第一个例子就是这个

    www.thesite.com/mythoughts/index.php?year=2010&month=9
    

    我需要重写为

    www.thesite.com/mythoughts/2010/9
    

    首先自动删除index.php

    我尝试过很多不同的事情,比如

    RewriteRule ^mythoughts/index.php?year=(.*)&month=(.*)$ mythoughts/$1/$2 [R=301,L]
    

    不起作用

    第二个例子就是这个

    www.thesite.com/mythoughts/index.php?thought=101
    

    应该重写为

    www.thesite.com/mythoughts/title-of-the-post
    

    我有一个脚本,可以将url变量与帖子的标题相匹配(并替换删除非法字符),但重写只是不起作用。

    这是我目前拥有的htaccess(一个简单的wordpress)

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    
    # uploaded files
    RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
    
    # add a trailing slash to /wp-admin
    RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
    RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
        RewriteRule . index.php [L]
    
    
    
    </IfModule>
    
    #END WordPress
    

    如果有人可以帮我指出这个整个htaccess事情的正确方向(我过去几周一直在努力),我会非常感激。

    先谢谢男女老少。

2 个答案:

答案 0 :(得分:0)

首先,你有:

RewriteRule ^mythoughts/index.php?year=(.*)&month=(.*)$ mythoughts/$1/$2 [R=301,L]

但是您无法在重写规则中与查询字符串进行匹配。此外,由于您有一个规则要重写它,您只需创建一个重定向循环。您需要匹配实际请求而不是URI。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /mythoughts/index\.php\?year=([^&]*)&month=([^&\ ]*)
RewriteRule ^ mythoughts/%1/%2 [R=301,L]

至于:

  

我有一个脚本,可以将url变量与帖子的标题相匹配(并替换删除非法字符),但重写只是不起作用。

我没有在你的htaccess中看到任何脚本,也许你是否包含规则或脚本。

答案 1 :(得分:0)

继续我的搜索,即使我在堆栈上发布了问题(伟大的)溢出

这是我最终的结果。

在第一个实例中使用双url字符串,答案是

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /mythoughts/index\.php\?year=([0-9\-]+)&month=([0-9\-]+)\ HTTP/ [NC]
RewriteRule ^index\.php$ http://site.co.uk/mythoughts/%1/%2? [R=301,L]

所以初始网址是

www.site.co.uk/mythoughts/index.php?year=2010&month=12

,重写结果为

www.site.co.uk/mythoughts/2010/12/

完美!!!!

在第二个例子中,首先回答Jons问题。

脚本是用php编写的,它从url变量的id中扫描旧的数据库concatin字符串,例如下面url中的变量

www.site.co.uk/mythoughts/index.php?though=21

这个帖子或数据库条目有一个标题,而在wordpress中,标题用于永久链接

所以它会是

www.site.co.uk/mythoughts/sublime-and-powerful-outcomes

脚本获取重写的第一个条件的id,并将id放在其位置。第二部分采用帖子的标题,并用删除破折号和特殊字符交换空格。

会产生新的网址。

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /mythoughts/index\.php\?thought=21
\ HTTP/ [NC]
RewriteRule ^index\.php$ http://site.co.uk/mythoughts/sublime-and-powerful-outcomes? [R=301,L]

感谢Jon花时间回答这个问题。

希望这有助于某人