【问题标题】:URL query string not changing with .htaccess fileURL 查询字符串不随 .htaccess 文件更改
【发布时间】:2014-01-11 16:27:56
【问题描述】:

我有这个网址:http://example.org/product.php?course_id=$x

我希望这个网址更改为:http://example.org/Course-Name

这是我在 .htaccess 文件中的代码:

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^  404page.php
RewriteRule ^/([0-9]+)/([^/]+)/$ /product.php?course_id=$1 [L,R]

哪个不工作请告诉我我的代码有什么问题?

【问题讨论】:

  • 您需要匹配的重定向,而不仅仅是重写。目前,您正在让服务器理解用户友好的 URL,但不会从真实 URL 重定向到该用户友好的 URL。请注意,您的 HTML 中的链接应该是您想要查看的链接,而不是那些将被重定向的真实链接。
  • 您的 .htaccess 是否已处理?如果您的目录有 AllowOverride all,请检查 apache 配置
  • 好的,我将重写更改为重定向,但仍然无法正常工作
  • 是的,它的 AllowOverride all
  • popnoodles 请告诉我如何重定向?我不知道确切的语法

标签: regex apache .htaccess mod-rewrite query-string


【解决方案1】:

您需要从规则中删除前导斜杠。试试这个规则:

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/+product\.php\?course_id=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=302,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /product.php?course_id=$1 [L,QSA]

【讨论】:

  • 哪个 URL 不起作用,这个 .htaccess 和您的 product.php 文件的位置是什么?
  • 你删除了你的评论吗?
  • 我不小心做了,但非常感谢您的时间,它现在可以工作了 :))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 2011-06-02
  • 2011-04-18
相关资源
最近更新 更多