我有这个网址http://www.example.com/Courses/get/38789/my-course,我将此规则添加到.htaccess文件
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/Courses/get
RewriteRule ^Courses/get/(.*)/(.*)$ course-$1-$2 [R=301,L]
但是当我去http://www.example.com/Courses/get/38789/my-course没有任何反应时,我会停留在同一页面上,没有重定向。
p.s链接只是一个例子而不是实际的链接
答案 0 :(得分:0)
更有效的方法是使用以下内容:
RewriteRule ^Courses/get/(\d+)/([^/]+)/?$ /course-$1-$2 [R=301,L]
现在,请记住,此规则应该出现在可能会将请求重写为index.php
文件的任何规则之前。如果您在问题中发布的代码是您的所有代码,那么这自然是正确的。如果没有,请发布您的整个.htaccess
文件,以便我们确保将其放置在正确的位置。
确保mod_rewrite
已打开,并且您已在虚拟主机/ Apache站点配置中设置了AllowOverride All
。如果您在共享生产服务器上运行,则不适用于您。
附注:虽然它确实有效,但您无需使用RewriteEngine on
两次 - 只需在文件开头一次即可。您也不需要RewriteCond %{REQUEST_URI} ^/Courses/get
- 它本质上是多余的,因为您已经使用表达式来测试请求。