[英]apache RewriteRule not working
我有这个网址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时,什么也没发生,我停留在同一页面上,没有重定向。
PS链接只是一个例子,而不是实际的链接
一种更有效的方法是使用以下方法:
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
它实际上是多余的,因为您已经在使用表达式对请求进行测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.