我有一个名为
的文件details.php
我尝试将htaccess放入以下行
RewriteRule ^details/(.+)/(.+)$ /details.php?id=$1&name=$2 [NC]
并且它不能与当前定位的相同名称一起使用
更新1:
通过添加-MultiViews
解决了问题选项+ FollowSymLinks -MultiViews
答案 0 :(得分:0)
删除“* ”。 “”是一个特殊字符,意思是“前一个字符的零个或多个”。他们正则表达式中有两个连续的地方是非常不规则的,如果不是不正确的话。如果你确实有一个名为details.php
的文件,你也不需要它们。
答案 1 :(得分:0)
你应该尝试:
RewriteRule ^details/([0-9]+)/(\w+)/?$ /details.php?id=$1&name=$2 [NC,L]
其中:
id =仅将ID限制为数字
名称 =仅将名称限制为字词+ nums
答案 2 :(得分:0)
最近,我遇到了一个问题,我需要重写网址,但无法弄清楚为什么会失败。然后我偶然发现了这个帖子,它解决了我的问题。
问题是,我的托管服务提供商默认启用Multiviews。 This Page详细解释了为什么这根本不能与RewriteRules很好地融合。我添加了-Multiviews来解决我的问题:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /devpath/SampleCustomerName/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]
如果我想在about.php驻留在该文件夹中时导航到/ devpath / SampleCustomerName / about,我会收到404错误。
使用+多视图
“它可以根据浏览器提供的媒体类型,语言,字符集和编码首选项,选择资源的最佳表示形式。它还实现了一些功能,可以更智能地处理来自发送不完整协商信息的浏览器的请求。“ “重点是Multiviews指令与我们的重写规则相互关联。因此,让我们的重写规则正常工作的解决方案是在没有Mutliviews选项的情况下向相关主机添加自定义指令。”