htaccess配置存在错误



这是地址栏上的链接:

durnitibaz.com/news.php?n=ACC-raid-on-passport-office-3-brokers-jail-fine

这是.htaccess的代码:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^news/([0-9] + )/([0-9a-zA-Z_-]+) news.php?n=$1 [L]

现在我不明白这个代码出了什么问题。因为当我试图访问数据库中的新闻时,这是不起作用的,比如地址栏中的url:

durnitibaz.com/news/ACC-raid-on-passport-office-3-brokers-jail-fine

这是显示404错误。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^news/([0-9] + )/([0-9a-zA-Z_-]+) news.php?n=$1 [L]

这里有很多错误:

  • 在此上下文中,正则表达式(带有未标注空格(在语法上无效
  • 正则表达式是完全错误的(即使"已更正"(-它与请求的URL不匹配。不存在";id";(第二个路径段(。但是对于目标URL来说,这似乎不是必需的
  • 检查请求是否映射到.php文件的第二个条件(RewriteCond指令(对于这样的请求永远不会成功,因此该规则也将因此而失败
  • 检查请求是否未映射到目录的第一个条件似乎是不必要的

请尝试以下操作:

RewriteRule ^news/([w-]+)$ news.php?n=$1 [L]

这与您发布的示例URL相匹配。例如CCD_ 3并且在内部将请求重写为CCD_。

前面的RewriteCond指令不是必需的。

简写字符类w[0-9a-zA-Z_]相同。

注意字符串锚的末尾($(-这可以确保您不会匹配太多(例如,包含文件扩展名的实际文件(,从而导致多对一重写。

相关内容

最新更新