3

我已经在我的 HTAccess 上工作了几天,但我遇到了死胡同。

我已经重写并将文件重定向为无扩展名,现在我需要重写 url 以使其对 SEO 友好。

以前,URL 是:http://www.example.com/member.php?playername=encodedName
我删除了扩展名:http://www.example.com/member?playername=encodedName
我不能完全得到它:http://www.example.com/member/encodedName

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

尝试重定向到 SEO 友好 URL 的代码。不工作。

 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 url 解析 .php 文件。作品。

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

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

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

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

4

1 回答 1

1

尝试重定向到 SEO 友好 URL 的代码”部分看起来不错。当您将直接发出的请求重定向到 php 文件以删除扩展名时,您并没有专门针对您正在重写的 3 个 SEO 友好 URL 做任何事情。

如果当您转到 时http://www.example.com/member/encodedName,您没有在 处获得内容http://www.example.com/member.php?playername=encodedName,那么这看起来像是多视图问题。您需要在 server/vhost 配置中关闭 Multiviews 或将其添加到 htaccess 文件的顶部(或在适当的现有Options语句中):

Options -Multiviews

为了重定向SEO 友好的 URL,请将外部 .php 请求重定向到无扩展 url。 ”规则之前添加:

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]
于 2012-11-13T23:29:10.070 回答