我有一个网址https://example.com/portfolio/portfolio/page/2/
,我需要将其重定向到https://example.com/contact/
我的尝试是:
RewriteCond %{REQUEST_URI} ^/portfolio/portfolio/page/2/ [NC]
RewriteRule ^/?/page/2/(.*)$ /contact/$1 [R,L]
OR
Redirect 301 /portfolio/portfolio/page/2/ /contact/
两者都失败并重定向到https://example.com/contact/page/2/
而非https://example.com/contact/
任何帮助都将不胜感激。
答案 0 :(得分:1)
根据您在问题评论中提供的其他信息,这是您想要的简单重写规则:
RewriteEngine on
Rewrite /?portfolio/portfolio/page/2/?$ /contact [END]
如果您想更改浏览器中可见的URL,则需要实现外部重定向:
RewriteEngine on
Rewrite /?portfolio/portfolio/page/2/?$ /contact [R=301]
如果这导致内部服务器错误(http状态500),那么您可能会运行非常旧版本的apache http服务器。然后尝试使用[L]
标志而不是[END]
。在这种情况下,您将在http服务器错误日志文件中看到相应的条目。
一般提示:您应该始终更喜欢将此类规则放在http服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess
样式文件)。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。只有在您无法控制主机配置(读取:非常便宜的托管服务提供商)或者您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦)的情况下,它们才被支持作为最后一个选项。 )。