【问题标题】:mod_rewrite htaccess parent directorymod_rewrite htaccess 父目录
【发布时间】:2013-06-06 16:46:20
【问题描述】:

我希望对 http://anydomain/users/pete/whatever 的任何请求重定向到 http://intranet/users/prp/whatever

我目前(大部分)使用 .htaccess 文件。 http://whatever/users/pete/somepage 重定向到 http://intranet/users/pete/somepage。据我所知,一切都很好,除了一个案例。对http://whatever/users/pete 的不带斜杠的请求将被重定向到http://intranet/users/pete//var/www/users/pete

我有一种预感,这是因为对/var/www/users/pete 的请求只会应用/var/www/users/.htaccess 规则(如果它们存在的话)。相反,Apache 试图提供帮助并将 /var/www/users/pete 指向 /var/www/users/pete/ 并且没有应用 RewriteBase?

/var/www/users/pete 是我的开发沙箱。

虚拟主机文档根目录是/var/www,在配置文件/etc/apache2/sites-available/default中定义

#/var/www/users/pete/.htaccess
RewriteEngine on
RewriteBase /users/pete
RewriteCond %{HTTP_HOST} !^intranet [NC]
RewriteRule ^(.*) http://intranet/users/pete/$1 [L,R=302,NE]

【问题讨论】:

    标签: .htaccess mod-rewrite apache2


    【解决方案1】:

    看起来很接近。你能用这个代码代替吗:

    Options +FollowSymLinks -MultiViews
    RewriteEngine on
    RewriteBase /users/prp/
    
    RewriteCond %{HTTP_HOST} !^intranet [NC]
    RewriteRule ^(.*)$ http://intranet/$1 [L,R=302,NE]
    

    【讨论】:

    • 没有用。我认为这是因为 .htaccess 指令没有被应用到一个目录上。我添加了一个自定义标题来测试这个:'Header set x-test "hi"' /var/www/users/pete/.htaccess 果然它没有进入响应。
    • 你能在这个 .htaccess 上添加一些垃圾文本,看看它是否会为你生成 500 内部错误。
    • 你说得对,我收回了。 /var/www/users/pete/.htaccess 顶部的垃圾导致 500
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 2011-03-20
    相关资源
    最近更新 更多