我在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)我想要的甚至可能吗?
答案 0 :(得分:1)
非常感谢anubhava在评论中的帮助=),因为它启发了解决方案。
我将第一个重写规则切换为:
RewriteRule ^(.*)$ /main.php&u=%1
然后最后一个条件:
RewriteCond %{REQUEST_URI} ^/([^/]*)$