微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mod_rewrite到.htaccess中的绝对path – 调高404

我想在URL中映射多个目录:

www.example.com/manual www.example.com/login

到web根目录之外的目录。

我的网站的根

/www/htdocs/customername/site

我想redirect到的手册在

500内部服务器尝试使用ErrorDocument处理请求时出错

mod_rewrite中的绝对文件path – 允许吗?

MOD_REWRITE帮助!

URL处理 – PHP与Apache重写

Apache mod_rewrite%2B和加号(+)

/www/customer/some_other_dir/manual

在mod_alias中,这将等于

Alias /manual /www/customer/some_other_dir/manual

但是因为我只能访问.htaccess ,所以我不能使用Alias,所以我必须使用mod_rewrite 。

在这个问题之后,我现在所得到的是:

RewriteRule ^manual(/(.*))?$ /www/htdocs/customername/manual/$2 [L]

这是从请求被正确识别和redirect的意义上讲的,但是我得到了一个如下所示的404(注意绝对path):

The requested URL /www/htdocs/customername/manual/resourcename.htm was not found on this server.

但是,我已经检查与PHP: echo file_exists(...) ,该文件肯定存在。

为什么会这样? 根据mod_rewrite文档,这是可能的,即使在.htaccess文件。 我明白,在.htaccess中做mod_rewrite时,会有一个自动化的前缀,但不是绝对path,会吗?

它也不应该是一个权利问题:它不在Web根目录中,而是在只有一个用户(主FTP帐户)可以访问的FTP树内。

我可以随时更改控制面板中的Web根目录,但是我希望按照我所描述的方式工作。

这是共享主机,所以我没有访问错误日志。

我刚刚检查过,这不是一个错误的301redirect,只是一个内部重写。

处理额外获取variables的Mod_rewrite(QSA不工作)

我怎样才能使用mod_rewrite删除后的一切? (问号)在一个URL?

.htaccess的子域名重写

重写/index.PHP?page=about到/ page /

如何redirect到一个文件夹,然后在htaccess重写子文件链接到根?

AFAIK mod_rewrite在“协议”级别工作(意思是在HTTP上)。 所以我怀疑你是在你的目录路径获取HTTP 302的位置。

所以我怕你可能被卡住,除非..你的主机让你遵循符号链接; 因此您可以链接到当前文档根目录下的位置(假设您有shell访问权限,或者可以使用FTP或控制面板)。

编辑:它实际上提到在文档中的URL文件阶段挂钩,所以现在我怀疑目录指令不允许足够的权限。

在.htaccess中,你不能重写wwwroot之外的文件

您需要在webroot中指向手册位置的符号链接

然后在你的.htaccess中你需要这行:

Options +SymLinksIfOwnerMatch

或者更盲目一点

Options +FollowSymlinks

然后你可以

RewriteRule ^manual(/(.*))?$ /www/htdocs/customername/site/manual/$2 [L]

站点下的手册是到/ www / customer / some_other_dir / manual的链接

您可以在命令行中使用以下命令创建符号链接

ln -s /www/htdocs/customername/site/manual /www/customer/some_other_dir/manual

但是我想象你在没有shell访问的情况下共享主机,所以看看在CPanel,Webmin或者你的管理界面中创建符号链接。 还有PHP / cgi脚本。 当然,你仍然受限于主机给你的权限。 如果他们不允许你遵循符号链接作为一个策略,你不能在你的.htaccess中覆盖它。

这告诉你你需要知道什么。 在此服务器上找不到请求的URL /www/htdocs/customername/manual/resourcename.htm。 它将RewriteRule ^manual(/(.*))?$ /www/htdocs/customername/manual/$2 [L]为意指重写example.com/manual/,就好像它是example.com/www/htdocs/customername/手册/。

尝试

RewriteRule ^manual(/(.*))?$ /customername/manual/$2 [L]

代替。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐