好的,所以我已经为我正在设置的服务器下载了一个 CMS,但我对文件所在的路径有些困难。
我已将 CMS 放在服务器上的子目录中,因为根目录已被另一个 CMS 使用。但是,CMS 在代码中反复使用“/”链接到他们的文件。例如,使用以下代码找到图像:
<img src="/images/banner.png" />
如您所知,这不起作用,因为上面的链接将请求重定向到服务器根目录中的图像文件夹,而不是子目录。CMS 还附带了一个“.htaccess”文件,所以我立即想到可以将所有使用“/”字符发出的请求重定向到服务器上的子目录。这是原始的“.htaccess”文件:
RewriteEngine On
RewriteRule ^index.php(|/)$ content/.php
RewriteRule ^error.php(|/)$ content/error.php
RewriteRule ^housekeeping(|/)$ housekeeping/index.php
RewriteRule ^(|/)$ content/$1.php
RewriteRule ^([a-zA-Z0-9_-]+)(|/)$ content/$1.php
RewriteRule ^rd/([^/]+)(|/)$ /rd.php?id=$1
RewriteRule ^quickregister/start(|/)$ /register/start.php
RewriteRule ^quickregister/step2(|/)$ /register/step2.php
RewriteRule ^quickregister/step3(|/)$ /register/complete.php
RewriteRule ^community/online(|/)$ content/online.php
RewriteRule ^community/vip(|/)$ content/vip.php
RewriteRule ^credits/goldvip(|/)$ content/goldvip.php
RewriteRule ^home/(..*)$ content/home.php?u=$1
RewriteRule ^articles/(..*)$ content/articles.php?story=$1
ErrorDocument 403 /content/error.php
ErrorDocument 404 /content/error.php
我以为通过添加
RewriteRule ^/$ /subdirectory/
对“/”的请求将被重定向,但无济于事。我检查了 apache 配置,似乎启用了使用 htaccess 文件覆盖配置,所以如果有人能够帮助我,我会很高兴。
提前致谢!
编辑: 我真正接近解决方案。我在“RewriteEngine on”下面插入了这段代码:
RewriteRule ^(.*)/(.*)$ /private_servers/strebbohotel/$2
访问网址“http://mysite.com/private_servers/strebbohotel/content/.php”时返回以下错误页面:未找到
在此服务器上未找到请求的 URL /private_servers/strebbohotel/.php。
此外,在尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。
如您所见,它出于某种原因跳过了“内容”子目录。我相信它与 .htaccess 文件的其他行有关,但我不知道是哪些。也可能是我需要一个更复杂的正则表达式,但我不是特别擅长它,所以如果有人可以进一步帮助我,我将不胜感激。