我有以下动态网址
我在.htaccess文件中有以下内容
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.domain\.com$ [NC]
RewriteRule !^index\.php($|/) sub.php?name=%2 [PT,L]
它工作正常并显示与该foo子域相关的数据。但是当我试图访问时
http://foo.mydomain.com/anything-9.html
其中foo是通配符dns子域名,bla是我的帖子标题,9是帖子ID
我添加了
RewriteRule ^/([^/]+)-([^/]+)\.html$ post.php?name=%2&post=$1&postid=$2 [PT,L]
后
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.domain\.com$ [NC]
RewriteRule !^index\.php($|/) sub.php?name=%2 [PT,L]
所以我的htaccess代码变成了
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.domain\.com$ [NC]
RewriteRule !^index\.php($|/) sub.php?name=%2 [PT,L]
RewriteRule ^/([^/]+)-([^/]+)\.html$ post.php?name=%2&post=$1&postid=$2 [PT,L]
它仍显示其主页,即sub.php而不是post.php 我应该对我的.htaccess文件做出哪些更改?
答案 0 :(得分:1)
我单独用PHP解决了这个问题。对我而言,它比Apache .htaccess脚本更容易...也更容易维护(一旦编写脚本)并具有更多功能。
我使用.htaccess将所有访问重定向到一个文件。这个使用$ _SERVER [“SERVER_NAME”]变量来检查所访问的子域,并使用$ _GET [“q”]中的变量来查看其余的。
这是.htaccess文件:
RewriteEngine on
RewriteRule ^redir.php$ redir.php [L,QSA]
RewriteRule ^(.*)$ redir.php?q=$0 [L,QSA]
第一个确保没有无限循环,第二个将所有内容重定向到文件。
然后redir文件包含所需的任何文件,而且它也很简单 - $ _SERVER [“QUERY_STRING”],$ _GET变量设置为新值,cwdir设置为更改工作目录(文件),set_include_path(包括路径)。
有效。但它有点傻:D
答案 1 :(得分:0)
这里你真的需要2个问号:post.php ?? name =%2& post = $ 1& postid = $ 2