繁体   English   中英

奇怪的URL RewriteRule .htaccess问题需要解释

[英]Strange URL RewriteRule .htaccess Issue needs explaination

我有类似book.php?id=23 URL,并使用htaccess使它们成为book/id/title我尝试了

RewriteRule ^book/([0-9]+)/([^/]+)/?$ book.php?id=$1 [NC,L,QSA]

但是它没有用,它正在转发到books.php但是没有$_REQUEST数据,这是因为URL引用与我在社区的帮助books.php用以解决此问题的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之类的示例,所以我不知道为什么会这样。 也许其他人可以对此有所了解?

在对您的原始问题进行了简短的讨论之后,我开始对此感到困惑,并且我开始认为这取决于服务器配置以及它是否将运行无扩展脚本。

例如,我的开发服务器将运行无扩展脚本,即键入/ 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]

如预期般运作。

我只能假设当服务器支持无扩展脚本时,如果别名与脚本名称相同,则重写规则将被忽略。

您很可能拥有与重写规则冲突的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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM