我不知道如何在浏览器中使用内部页面的这些网址:
images,hobbies = pageType
john,smith = peopleName
我想我应该通过php查询字符串(GET)获取pageType并提供相应的布局。
在.htaccess中我有:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{REQUEST_URI} !index\.php
RewriteCond %{HTTP_HOST} ^(.+?)\.(.+?)\.example\.com/$
RewriteRule (.+).(.+)\.example\.com\/(.*) /index.php [L]
答案 0 :(得分:0)
有多种方法可以实现这一目标。首先,您可以使用包含请求的URI的$_SERVER['REQUEST_URI']
在php中解析请求uri。
另一种方法是使用您的.htaccess
文件。在这种情况下,您甚至不必解析php中的服务器名称:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^(.*?)\.?([^\.]+?)\.example\.com$
RewriteRule ^([^/]*)?/?(.*?)/?$ /index.php?product=%1&language=%2&pageType=$1&peopleName=$2 [L]
请注意,我添加了规则RewriteCond %{REQUEST_FILENAME} !-f
,而不是针对index.php
的检查,因为这样您可以像css文件一样提供资源,而无需将其重定向到index.php。
请注意HTTP_HOST
没有斜杠。
修改强>
根据评论的要求:
要添加其他可选参数,您可以使用([^/]*)?/?
。因此RewriteRule
可能如下所示:
RewriteRule ^([^/]*)?/?([^/]*)?/?(.*?)/?$ /index.php?product=%1&language=%2&pageType=$1&peopleName=$2&peopleAge=$3 [L]