我要将旧站点移到新网站的/ archive子目录中。该站点是所有HTML都具有很多完全合格的URL,直到未将其保存在存档文件夹中时(例如(http://domain.com/pictures/home.html
))。
问题是...这些完全合格的URL中有很多在文件名中带有#,例如http://domain.com/pictures/category#001.html
。然后将它们链接为as http://domain.com/pictures/category%23001.html
。将重写应用于这些URL时,服务器找不到文件404错误,路径在%23处被截断(例如,“ / archive / pictures / category在此服务器上未找到”。)
我尝试使用[B]标志,它仍然会显示404错误,但是它给出的文件路径确实存在(例如,在此服务器上找不到'/archive/pictures/category#001.html。)。
如果我使用%23
URL(例如http://domain.com/archive/pictures/category%23001.html
)中的URL直接导航到存档目录中的文件,则一切正常。唯一的问题是通过RewriteRule添加/ archive目录时
规则就是这样:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /archive/$1 [B,L,QSA]
我也尝试过用以下规则替换规则:
RewriteRule (.*) /archive/%{REQUEST_URI} [B,L,QSA]
但这有同样的问题。
感谢您阅读本文!
最后,我可以使服务器转到文件的唯一方法是使用以下代码(添加R = 302标志)重定向到该文件,而不是重写URL。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /archive/$1 [R=302,B,L,QSA]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句