我有book.php?id=23
这样的网址,并使用htaccess创建book/id/title
我试过这个
RewriteRule ^book/([0-9]+)/([^/]+)/?$ book.php?id=$1 [NC,L,QSA]
但它不起作用,它转发到books.php
但没有$_REQUEST
数据
事实证明这是因为url引用与我在呼叫社区帮助的php文件的名称相同,以解决这个问题
RewriteRule ^books/([0-9]+)/([^/]+)/?$ book.php?id=$1 [NC,L,QSA]
这是我目前的工作.htaccess:
RewriteEngine On
RewriteRule ^kitap/([0-9]+)/([^/]+)/?$ book.php?id=$1 [NC,L,QSA]
RewriteRule ^yyin/([0-9]+)/([^/]+)/?$ yayin.php?id=$1 [NC,L,QSA]
RewriteRule ^proje/([0-9]+)/([^/]+)/?$ project.php?id=$1 [NC,L,QSA]
我见过的每个在线教程都使用了^ product和 product.php,或^ category和category.php所以我不知道为什么会这样 应该。也许其他人可以对此有所了解?
答案 0 :(得分:1)
在我们对您原始问题的小讨论后,我开始讨论这个问题,我开始认为这取决于服务器配置以及它是否会运行无扩展脚本。
例如,我的开发服务器将运行无扩展脚本,即输入/ xyz将显示xyz.php
重写规则
RewriteRule ^category/([0-9]+)/([^/]+)/?$ category.php?id=$1 [NC,L,QSA]
不起作用,但是
RewriteRule ^categories/([0-9]+)/([^/]+)/?$ category.php?id=$1 [NC,L,QSA]
确实有效。
在我的托管服务器上,它不支持无扩展脚本,www.mydomain.com/xyz会给我404错误,但是:
RewriteRule ^category/([0-9]+)/([^/]+)/?$ category.php?id=$1 [NC,L,QSA]
按预期工作。
我只能假设当服务器支持无扩展脚本时,如果别名与脚本名称相同,则忽略重写规则。
答案 1 :(得分:0)
您很可能MultiViews
与重写规则发生冲突。
富乐.htaccess:(进入DOCUMENT_ROOT目录)
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^kitap/([0-9]+)/([^/]+)/?$ book.php?id=$1 [NC,L,QSA]
RewriteRule ^yyin/([0-9]+)/([^/]+)/?$ yayin.php?id=$1 [NC,L,QSA]
RewriteRule ^proje/([0-9]+)/([^/]+)/?$ project.php?id=$1 [NC,L,QSA]
RewriteRule ^books/([0-9]+)/([^/]+)/?$ book.php?id=$1 [NC,L,QSA]