删除扩展名后重写动态网址

时间:2012-11-13 21:20:15

标签: .htaccess mod-rewrite seo

我已经在HTAccess上工作了几天,而且我已经走到了尽头。

我已经重写并将文件重定向为无扩展名,现在我需要重写网址为SEO友好。

以前,网址为:http://www.example.com/member.php?playername=encodedName
我删除了扩展程序:http://www.example.com/member?playername=encodedName
我无法理解:http://www.example.com/member/encodedName

这是我到目前为止所得到的:

  

代码尝试重定向到SEO友好网址。不起作用。

 RewriteRule ^member/([^/]*)$ /member.php?playername=$1 [L] 
 RewriteRule ^squad/([^/]*)$ /squad.php?squadname=$1 [L] 
 RewriteRule ^article/([^/]*)$ /article.php?articlename=$1 [L]
  

除非目录,否则删除尾部斜杠。作品。

 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)/$ /$1 [R=301,L]
  

解析无扩展php网址的.php文件。作品。

 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME}\.php -f
 RewriteRule ^(.*)$ $1.php [L]
  

将外部.php请求重定向到无扩展名网址。作品。

 RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
 RewriteRule ^(([^/]+/)*[^.]+)\.php $1 [R=301,L]

有没有人知道我做错了什么?这可能是我刚刚遇到的一个非常新手的问题。

1 个答案:

答案 0 :(得分:1)

代码尝试重定向到SEO友情网址”部分看起来不错。当您将直接重定向到php文件的请求重定向到删除扩展时,您没有做任何关于您重写的3个SEO友好URL的具体内容。

如果您转到http://www.example.com/member/encodedName,并且您未在http://www.example.com/member.php?playername=encodedName处获得内容,那么这看起来像是Multiviews问题。您需要在服务器/ vhost配置中关闭Multiviews,或将其添加到htaccess文件的顶部(或在相应的现有Options语句中):

Options -Multiviews

为了将重定向到 SEO友好网址,请在之前添加此将外部.php请求重定向到无扩展网址。 “规则:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /member\.php\?playername=([^&\ ]+)([^\ ]*)
RewriteRule ^ /member/%1?%2 [L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /squad\.php\?squadname=([^&\ ]+)([^\ ]*)
RewriteRule ^ /squad/%1?%2 [L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /artcile\.php\?articlename=([^&\ ]+)([^\ ]*)
RewriteRule ^ /article/%1?%2 [L,R=301]