【发布时间】:2013-08-18 21:29:44
【问题描述】:
想要的结果:
http://example.com/ -> index.php
http://www.example.com/ -> index.php
http://hello.example.com/ -> index.php?subdomain=hello
http://whatever.example.com/ -> index.php?subdomain=whatever
http://example.com/world -> index.php?path=world
http://example.com/world/test -> index.php?path=world/test
http://hello.example.com/world/test -> index.php?subdomain=hello&path=world/test
使用我现在拥有的 .htaccess,我可以实现一个或另一个重新映射,但不能同时实现。
RewriteEngine On
# 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 ^.*$ index.php?subdomain=%1
# Map all requests to the 'path' get variable in index.php
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [L]
我很难将两者结合起来......请指点一下?
编辑
我现在遇到的不良行为是,如果我有一个子域和 .com/ 之后的路径,则只会传递子域,即:
http://hello.example.com/world-> index.php?subdomain=hello
【问题讨论】:
-
结合 VirtualHosts 来处理子域和 .htaccess 来处理 url 重写也许会更好。两年后,你如何解决这个问题?
标签: php apache .htaccess mod-rewrite