.htaccess URL重写不起作用

时间:2012-07-31 15:59:00

标签: .htaccess

我写了.htaccess文件将网址转换为SEO友好:

原始网址是:

http://palestinianz.com/?page=person&p=Alex-Atalla

.htaccess的内容是:

RewriteEngine On
RewriteRule ^([^/]*)\.html$ /?page=person&p=$1 [L]

它应该产生这样的链接:

http://palestinianz.com/Alex-Atalla.html

但是虽然我将文件放在我网站的根目录中但它没有任何效果! 问题出在哪里?

2 个答案:

答案 0 :(得分:0)

您可以尝试:

RewriteCond %{REQUEST_URI} (.+)\.html$
RewriteRule ^(.+)\.html$ ./index.php?page=person&p=$1 [L]

唯一的问题是任何.html页面都会经历这个问题。可能想要更改为以下内容:

 # URL: domain.com/person/Alex-Atalla.html

 RewriteCond %{REQUEST_URI} (.+)/(.+)\.html$
 RewriteRule ^(.+)/(.+)\.html$ ./index.php?page=$1&p=$2 [L]

这样您就可以更灵活地更改页面变量

答案 1 :(得分:0)

如果您希望在地址栏中更改URL,则需要重定向浏览器,然后在服务器上重写。本回答的第一部分解释了您想要的过程:https://stackoverflow.com/a/11711948/851273

所以看第二个列表,如果一个丑陋的链接请求一个漂亮的链接,那么这个过程就是重定向浏览器:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?page=person&p=([^\ ]+)
RewriteRule ^$ /%1.html? [R=301,L]

现在,在服务器端,你需要内部重写它回到丑陋的网址,这或多或少是你已经拥有的网址:

RewriteRule ^([^/]*)\.html$ /?page=person&p=$1 [L]