【问题标题】:htacces - Redirect old url to newhtaccess - 将旧网址重定向到新网址
【发布时间】:2017-06-03 18:49:24
【问题描述】:

我想用附加参数将旧网址重定向到新网址

如何防止创建许多 youtube 参数?

http://example.com/lady-gaga-monster

http://example.com/lady-gaga-monster-youtube

目前是 htaccess

RewriteEngine on
RewriteRule ^(.*)-youtube?$ index.php?search=$1&source=youtube [L]

我添加了这一行

RewriteRule ^(.*)$ http://example.com//$1-youtube [R=301,L]

浏览器上的结果 http://example.com/lady-gaga-monster-youtube-youtube-youtube-youtube-youtube

【问题讨论】:

    标签: php .htaccess redirect


    【解决方案1】:

    您创建了一个无限循环。您需要添加 RewriteCONd,以便仅在请求的 URL 不以“-youtube”结尾时应用规则:

    RewriteEngine on
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # external rewrite
    RewriteCond %{REQUEST_URI} !-youtube$ 
    RewriteRule ^(.*)$ http://example.com/$1-youtube [R=301,L]
    # internal rewrite
    RewriteRule ^(.*)-youtube$ index.php?search=$1&source=youtube [L]
    

    还有一个一般提示:您应该始终喜欢将此类规则放在 http 服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess 样式文件)。众所周知,这些文件容易出错,难以调试,而且它们确实会降低服务器的速度。它们仅在您无法控制主机配置的情况下(阅读:非常便宜的托管服务提供商)或如果您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦)提供它们作为最后一个选项)。

    【讨论】:

    • 嗨@arkascha,非常感谢您的回答,但仍然无法正常工作:)
    • 而“仍然无法正常工作”是什么意思究竟?发生什么了?您真的清除浏览器缓存了吗?您在 http 服务器错误日志文件中看到了什么?
    • 很高兴听到。请公平并分享您的定制,以便其他人可以从中受益;-)
    • 好的,我接受了该编辑,否则只有您自己可以看到它,否则 proposed 编辑。不过,我不明白修改应该有什么不同......
    • 在我添加 3 行代码之前,每次访问该网站都会直接指向example.com/-youtube
    猜你喜欢
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    相关资源
    最近更新 更多