-1

假设有一个example.com(在apache上工作),我们有一个名为“sub”的子目录(example.com/sub)。技术上是否可以配置 .htacess 将 http://example.com/sub/ 重写http://example.com/home/并将所有流量重定向到它,以便 /home 中的任何路径都应该重定向到/sub 中的相同路径,我试过这个

RewriteEngine On
Options +FollowSymlinks
RewriteRule ^sub/?$ /home/ [R,NC]
Redirect /index.html http://example.com/sub

但最终我得到 404 Not Found。有任何想法吗 ?

PS 即使我收到 1 个答案,我之前的问题也已关闭:

RewriteRule /sub/$ /home/$1 [NC,L,R=301]
RewriteRule /index.html http://example.com/sub [R]

这对我不起作用(401 禁止)。

4

1 回答 1

1

要静默地重写访问者/home/anypath/anyfile对您服务器上底层路径的请求,/sub/anypath/anyfile可以使用以下命令:

RewriteRule ^home(?:/(.+))?$ /sub/$1

要将用户的浏览器从干净的 URL 重定向//index.html干净的/homeURL,您可以尝试以下操作:

RewriteRule ^(?:$|index.html$) /home [R=permanent]

(对于这两个规则,如果您使用的是 httpd.conf,则需要在符号后添加一个正斜杠^。如果您使用的是 .htaccess,那么您不需要在模式的开头使用斜杠。 )

请注意,您不能(轻松)从/subto重定向,/home因为这将创建一个无限循环的重定向和重写。但是不要担心从/subto重定向,/home因为干净的 URL 是为了使 URL 在广告文学和重新启动的网页上看起来不错。如果访问者碰巧访问了旧的“丑陋” URL,这不会受到伤害,并且只要他们点击任何新链接,他们就会被带到新的干净 URL。

于 2013-04-27T19:49:20.743 回答