我尝试重定向:
来自:www.myDomain.com/ca/blog/first-post
to:www.myDomain / ca / blog / post.php?url = first-post
我在.htaccess中写道:
RewriteRule ^ca\/blog\/(.*)\/?$ ca/blog/post.php?url=$1 [L]
在post.php中我有这个:
$url = $_GET['url'];
echo $url;
它似乎转到正确的文件:post.php,但回显给出: post.php它应该给出第一篇文章(或博客后的任何内容)
我在这里测试了正则表达式模式:http://regexr.com/3c5ud并且没关系
我在这里测试了htaccess:http://htaccess.madewithlove.be
但是当我放入服务器时仍然提供post.php。请有人解释一下。
在.htaccess中我有其他规则:
# Get rid of .php :
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
# Page of errors:
ErrorDocument 404 /errors/noTrobat.html
# From no www to yes www :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
答案 0 :(得分:1)
问题是您当前的规则也匹配post.php
。所以,你明白了:
www.myDomain.com/ca/blog/first-post
-> www.myDomain/ca/blog/post.php?url=first-post
-> www.myDomain/ca/blog/post.php?url=post.php
在当前规则之前添加规则,以防止重写post.php
本身:
RewriteRule ^ca\/blog\/post\.php - [L]
RewriteRule ^ca\/blog\/(.*)\/?$ ca/blog/post.php?url=$1 [L]