htaccess重定向+重写相同的URL



我有一个URL mydomain.com/abc/xyz我想把它重定向到mydomain.com/def

现在,我还想将mydomain.com/abc/xyz URL重写为mydomain.com/def,这意味着如果有人打开mydomain.com/def,它应该打开mydomaincom/abc/xyz-的内容

我尝试过重定向和重写,它们都是单独工作的,但没有结合起来。

这是代码

RewriteRule ^abc/xyz/ http://mydomain. com/def [L,R=301]
RewriteRule ^/def /abc/xyz  [NC,L]

简单地说,让我们考虑URL1=mydomain.com/abc/xyzURL2=mydomain.com/def

我想要URL2作为漂亮的URL,并且应该打开URL1的内容但是如果有人打开URL1,我希望他们重定向到URL2并显示URL1的内容

所以,首先重定向,然后使用重写规则显示内容。

我想知道重写规则是否真的是单独工作的。。。你说你在用一个";。htaccess";文件,因此是一个分布式配置文件。当在这样的位置实现重写规则时(与http服务器的中央配置相反(,重写规则中的匹配模式应用于相对路径。如果你仔细想想,并且有明确的记录,这实际上是很有意义的。这意味着你的匹配模式永远不会匹配。。。

无论您是在分布式配置文件中还是在中央配置文件中实现这些规则,这里都有一个稍微修改过的版本,它也能正常工作:

RewriteEngine on
RewriteRule ^/?abc/xyz/ https://example.com/def [L,R=301]
RewriteRule ^/?def /abc/xyz  [NC,L]

最有可能的是,你也想更精确一点:

RewriteEngine on
RewriteRule ^/?abc/xyz/?$ https://example.com/def [L,R=301]
RewriteRule ^/?def/?$ /abc/xyz  [NC,L]

最新更新