现在我使用这些类型的网址:
http://subdomain.example.com/index.php?page=contact
http://subdomain.example.com/index.php?page=about
http://subdomain.example.com/index.php?page=category&category_id=1
http://subdomain.example.com/index.php?page=item&item_id=1
我希望他们看起来像这样:
http://subdomain.example.com/contact/
http://subdomain.example.com/about/
http://subdomain.example.com/category-1/
http://subdomain.example.com/item-1/
所以,我将我的页面/ php文件容纳在以下内容中:
category_id -> category_name
item_id -> item_name
我的.htaccess文件:
RewriteEngine on
RewriteRule ^([^/]*)/$ /index.php?page=$1 [L]
RewriteRule ^([^/]*)/([^/]*)/$ /index.php?page=$1&category_name=$2 [L]
这给了我一些不错的网址,但我希望它们没有中间部分。换句话说,我想摆脱“类别”和“项目”。例如。
http://subdomain.example.com/category/category-1/ -> http://subdomain.example.com/category-1/
当我尝试将我的.htaccess更改为以下内容时,我可以使用此功能。但你可以看到我必须在第二行发表评论,所以我的联系页面不再有用了:(
RewriteEngine on
#RewriteRule ^([^/]*)/$ /index.php?page=$1 [L]
RewriteRule ^([^/]*)/$ /index.php?page=category&category_name=$1 [L]
我知道它与参数有关,一对二,但我无法弄清楚我必须遵循哪种方式才能让我适应。
如果有人可以帮助我解决这个问题,我真的很乐意!
答案 0 :(得分:0)
如果我理解......
RewriteEngine on
# Not for real file or directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
# for category-1/ and all like xxxxx-xxx-nnn
RewriteRule ^([^/]+-\d+)/?$ /index.php?page=category&category_name=$1 [L]
# for contact/ or about/ or other/
RewriteRule ^([^/]+)/$ /index.php?page=$1 [L]
结果:
http://subdomain.example.com/lord-of-the-rings-1/
-> http://subdomain.example.com/index.php?page=category&category_name=lord-of-the-rings-1