0

早上堆垛机,

我最近继承了一个网站,我将整个网站移到了新服务器上,并调整了数据库和配置 URL 以指向新位置。

我认为它是 .htaccess,因为当我使用它时,索引页面可以工作,但其他页面都没有,这是当前的 .htacess 脚本(如下),这是网站 Temp URL LINK-->http:// 83.170.113.94/~gagajool/ 任何关于如何解决这个问题的建议都会很高兴听到。

谢谢

 RewriteEngine on
    Options FollowSymLinks

    RewriteCond %{REQUEST_URI} ^$
    RewriteRule ^(.+)$ / [R=301,L]

    RewriteCond %{REQUEST_URI} !^/static
    RewriteCond %{REQUEST_URI} !^/index.php
    RewriteCond %{REQUEST_URI} !^/favicon.ico

    RewriteRule ^(.+[^/])$ /$1/ [R=301,L]

    RewriteCond %{REQUEST_URI} !^/static
    RewriteCond %{REQUEST_URI} !^/index.php
    RewriteCond %{REQUEST_URI} !^/favicon.ico

    RewriteRule ^(.+)$ /index.php?request=$1 [QSA,L]
4

1 回答 1

0

如果站点暂时位于目录中,则 htaccess 将无法在不考虑 URI 基础的情况下工作。

例如:

RewriteRule ^(.+[^/])$ /$1/ [R=301,L]

如果 htaccess 文件位于 中/~gagajool/,则访问http://83.170.113.94/~gagajool/something(注意缺少尾部斜杠)将导致上述规则匹配,除了目标是/$1/,因此浏览器被重定向到http://83.170.113.94/something/(不再有 ~gagajool)。

最后一条规则也是如此(这可能就是你得到 404 的原因)。将正确的 URI 基础添加到您的目标,例如:

RewriteRule ^(.+[^/])$ /~gagajool/$1/ [R=301,L]

或添加:

RewriteBase /~gagajool/

并从重写规则中删除前导斜杠:

RewriteRule ^(.+[^/])$ $1/ [R=301,L]
于 2012-10-17T09:46:40.130 回答