【发布时间】:2015-11-10 01:32:00
【问题描述】:
从网上尝试了几种解决方案,但对我不起作用。因此,这是我的情况,如果有人可以帮助我,我会非常高兴。
这是我的 httpd.conf 文件主要信息:
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
这是我的 .htaccess 信息:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^blog([^/]*)/([^/]*)$ /post.php?bID=$1&title=$2 [L]
目标是重写
来自:www.site.com/post.php?bID=7&title=blog-title
至:www.site.com/blog7/blog-title
但是它不起作用(页面加载正常但url没有修改)!我通过http://www.generateit.net/mod-rewrite/index.php生成了重写规则,应该没问题。
奇怪的是,在尝试隐藏 php 扩展等其他规则时它工作正常,所以 .htaccess 规则显然工作。
## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=302,L]
# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
有人猜到了吗?
【问题讨论】:
-
你所说的“不工作”是什么意思?你有什么样的错误? apache error.log 中发生了什么?
-
顺便说一句,htaccess.madewithlove.be 是测试 .htaccess 的好地方
-
感谢您的提示! @hjpotter92 答案对我有用
标签: apache .htaccess mod-rewrite url-rewriting friendly-url