为什么htaccess会返回完整路径

时间:2014-03-27 08:18:23

标签: php apache .htaccess mod-rewrite

我在htaccess中尝试以下内容,除了一个细节之外,一切都有效:它发布了整个/ var / www / project路径而不是仅仅给我我认为我告诉它给我的东西。

当我输入dev.mysite.com/folder

它正确地给了我http://dev.mysite.com/index.php?path=folder,正如预期的那样。



但是,在另一种情况下,我期待这样:http://dev.mysite.com/index.php?path=main.php&u=1079

但它给了我http://dev.mysite.com/index.php?path=var/www/dev.mysite.com/main.php&u=1079

(示例网址:1079.dev.mysite.com(其中1079是用户个人资料))

RewriteEngine On
# force non-www domain
RewriteBase /

# Parse the subdomain as a variable we can access in PHP, and
# run the main index.php script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST}        !^www
RewriteCond %{HTTP_HOST}         ^([^\.]+)\.([^\.]+)\.([^\.]+)\.([^\.]+)$
RewriteRule ^(.*)$ /main.php?u=%1

# Map all requests to the 'path' get variable in index.php
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/([^/].*[^\?])
RewriteRule ^(.*)$ http://dev.mysite.com/index.php?path=%1 [L,QSA] 

现在,我想知道:

1)我做错了什么?

2)我想要的甚至可能吗?

1 个答案:

答案 0 :(得分:1)

非常感谢anubhava在评论中的帮助=),因为它启发了解决方案。

我将第一个重写规则切换为:

RewriteRule ^(.*)$ /main.php&u=%1 

然后最后一个条件:

RewriteCond %{REQUEST_URI} ^/([^/]*)$