我正在使用以下.htaccess规则:
RewriteRule ^news/(.*),(.*).html$ news.php?id=$2 [L]
使用时,例如。以下网址:
http://www.foo.com/news/bar,303.html
它适用于我的本地xampp,但不适用于实时服务器.var_dump($ _ GET)返回一个空数组,因此过滤器不会定义id参数。 任何想法有什么不对?
编辑:我安装了mod_rewrite,它适用于大多数链接而不是这个..
答案 0 :(得分:2)
您的规则似乎没问题。在您的实时服务器上<Editor HeightRequest = "50" />
选项可能已启用。关闭它使用:
MultiViews
在.htaccess的顶部。
选项Options -MultiViews
(请参阅http://httpd.apache.org/docs/2.4/content-negotiation.html)由MultiViews
在 Apache's content negotiation module
之前运行使用,并使Apache服务器匹配文件扩展名。因此,如果mod_rewrite
是网址,那么Apache将提供/news
。
答案 1 :(得分:1)
假设你安装了mod_rewrite,它可能不是全局激活而需要激活
RewriteEngine On
RewriteBase /news/
RewriteRule ^news/(.*),(.*).html$ news.php?id=$2 [L]
例如;转入重写,并指定直接将规则应用于
答案 2 :(得分:1)
您可能想要从apache启用重写模块
打开终端并执行以下代码
sudo a2enmod rewrite
sudo service apache2 restart
现在可以使用重写模块,按照下面给出的步骤。
- 使用以下命令在任何编辑器中打开默认的Apache配置文件。
醇>
sudo nano /etc/apache2/sites-enabled/000-default.conf
- 在该文件中,您将在第1行找到该块。在该块的内部,添加以下块:
醇>
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
再次重启apache
sudo service apache2 restart
了解有关重写模块Click here
的更多信息