首页 > 解决方案 > 正则表达式:“Mod Rewrite”从“通配符”到地址的所有内容,而不更改地址?

问题描述

我真的不知道怎么写标题。发帖前我改了好几次。但请随意将其更改为最合适的问题。

我也不敢相信我已经找不到我想要的这个非常基本的事情的答案。我在这里和谷歌上都进行了搜索,但找不到任何可以回答这个问题的东西。

所以我有这个默认的 WordPress .htaccess 代码:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

但我想补充的是,所有路径都/cv/以显示/cv/ 的页面开头的可能性。所以就像一个通配符之后,就像/cv/*.

我尝试了几个版本:

RewriteRule /cv/.+ /cv/ - [L]

但没有一个奏效。我尝试的大多数事情都将我重定向到“找不到页面”页面。但有些只是重定向回/cv/。但是我希望whatevers'-after-/cv/ 应该留在那里。因此,如果地址是 example /cv/hello,它应该仍然/cv/hello在地址中,但显示的页面应该是 /cv/。

不要认为这应该是那么困难。我错过了什么?

标签: regexwordpress.htaccessredirectmod-rewrite

解决方案


好的,我现在设置了一个测试,并获得以下命令以使 domain.com/cv/hello 重定向到 domain.com/cv 但保留 URL

Options +FollowSymLinks

RewriteEngine On
RewriteCond %{REQUEST_URI} \/cv\/(.+)$ [NC]
# make sure to exit here, if there already was a redirect (to prevent endless redirecting)
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^.*$ /cv/%1 [NC,P,R=301,L]

“魔术”是FollowSymlinks,使用P告诉 apache 代理传递重定向,以便 URL 保持不变,并检查是否已经重定向到当前 URL 以避免无休止的重定向


推荐阅读