【问题标题】:Rewrite URL and remove part with .htaccess使用 .htaccess 重写 URL 并删除部分
【发布时间】:2014-03-06 09:32:18
【问题描述】:

我真的被我的 .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 重写为新格式。旧网址是这样的:

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

新的 URL 应该是这样的:

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

我要删除的部分“nieuws/QOgbb/”并不总是相同的,所以我必须使用正则表达式。但我尝试的一切都没有奏效。

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

  1. 执行此操作的正确 RewriteRule 是什么?
  2. 我应该把它放在哪里。在根文件夹的 .htaccess 中,还是 WordPress 安装所在的 af1wp 文件夹中?

Tnx 进阶


以下poncha的问题:

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

【问题讨论】:

  • 请澄清几点:原始网址总是以两个“文件夹”开头吗?或者也许只有最后一部分(在最后一个斜线之后)很重要?另外,浏览器应该重定向到一个新的位置,还是执行子请求(保持原始网址不变)?文件 /raikkonen-alles-is-mogelijk-in-australi 是否存在于文档根目录中,还是这个虚拟 uri 也存在?
  • ^^ 如果您编辑问题并在那里提供我要求的信息会更好,而不是顺便在 cmets 中回复。
  • @Poncha,tnx 供您发表评论。我已经为你更新了问题:-)

标签: .htaccess mod-rewrite url-rewriting


【解决方案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(将原始查询字符串附加到重写的请求中)。

【讨论】:

  • 感谢您的帮助 :-)。修好了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多