重写URL并使用.htaccess删除部分

时间:2014-03-06 09:32:18

标签: .htaccess mod-rewrite url-rewriting

我真的被我的.htaccess文件困住了,需要一些帮助:)。我有一个WordPress安装,我用于测试。它在一个文件夹中,我使用.htaccess到达那里。这是我到目前为止使用的规则:

######### Custom #########
RewriteEngine On

# ignore folders
RewriteCond %{REQUEST_URI} "/af1wp/"
RewriteRule (.*) $1 [L]

###############
# only for me #
###############
# HOME (Senne Tijdeman)
RewriteCond %{REMOTE_ADDR} ^###\.###\.###\.###$
RewriteCond %{HTTP_HOST} ^((www.)?([a-z0-9_\-]+).)?alleenf1.nl$
RewriteCond %{REQUEST_URI} !^/af1wp/$
RewriteRule ^(.*)$ /af1wp/$1 [L]

这有效(当然我用我的真实IP地址),所以没问题。但现在我想将现有的URL重写为新格式。旧的URL是这样的:

http://alleenf1.nl/nieuws/QOgbb/raikkonen-alles-is-mogelijk-in-australi

新网址应为:

http://alleenf1.nl/raikkonen-alles-is-mogelijk-in-australi

我要删除的部分“ nieuws / QOgbb / ”并不总是一样,所以我必须使用正则表达式。但是我尝试过的一切都根本不起作用。

我认为这很简单,但显然不适合我。现在我有两个问题。

  1. 这样做的RewriteRule是什么?
  2. 我应该把它放在哪里。在根文件夹的.htaccess或WordPress安装的af1wp文件夹中?
  3. Tnx in advanced


    要解决以下 poncha 的问题:

    1. 是的,网址始终以文件夹开头。只是为了澄清(不清楚)“nieuws”部分总是相同的,但不是第二部分(称之为ID)。
    2. 我更喜欢重定向。
    3. 文件/raikkonen-alles-is-mogelijk-in-australi是WordPress中的一个帖子。 WordPress安装目前位于文件夹af1wp中,但在上线时将移动到根文件夹。

1 个答案:

答案 0 :(得分:1)

试试这个:

RewriteEngine On
RewriteRule ^nieuws/([^/]+)/(.*) /af1wp/$1 [R=301,L,QSA]
  1. 这只会匹配以“nieuws”开头的网址
  2. 目前,重写目标为/af1wp/,在移动wordpress时将其更改为/
  3. 当您移动wordpress时,您需要在wordpress规则中混合使用此规则,因为它已经有自己的重写规则 - 将此规则置于其规则之上。
  4. 此处使用的标志:
    • R=301 - 使用HTTP状态301(永久移动)重定向。
    • L - 最后一条规则(在此规则成功匹配后停止规则解析)
    • QSA - query-string-append(将原始查询字符串附加到重写的请求中)。