1

我正在尝试使用 mod_rewrite 清理有用的 URL。我确信这是一个常见的问题,但我对 mod_rewrite 不是很感兴趣:

我有这个网址: http://mysite.com/user.php?user=fatcatmat&sort= popularv

我希望能够像这样重写它:

http://mysite.com/user/user/fatcatmat/sort/popularv (有没有办法删除 URL 中的重复项?)

我想我已经设法删除了 PHP 扩展。

RewriteRule ^(.*)\$ $1.php [nc]

以上是正确的吗?

对于单独的页面,我会有这样的东西。

RewriteRule ^/?user(/)?$ user.php

主要问题:执行上述所有操作有点乏味,但是否有一个 MEGA 重写规则,它只会在变量及其值之间放置“/”并从所有页面中删除 .php 扩展名?

感谢您的任何帮助。

4

3 回答 3

0

尝试像这样使用 smth:

RewriteBase /
RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)&(\w+)=(\w+)$ [NC]
RewriteRule ^user.php$ user/%1/%2/%3/%4? [NC,R=301,L]

RewriteRule ^user/(\w+)/(\w+)/(\w+)/(\w+)$ user.php?$1=$2&$3=$4 [L]
于 2009-07-16T07:16:22.530 回答
0

试试这些规则:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ (/[^/?\s]+)+\.php[?/\s]
RewriteCond %{QUERY_STRING} ^([^/&=]+)=([^/&]+)(&([^&].*))?$
RewriteRule \.php$ ?%4 [N,E=PATH:%{ENV:PATH}/%1/%2]
RewriteCond %{ENV:PATH} ^/
RewriteRule \.php$ %{ENV:PATH} [L,R=301]

RewriteRule ^(.*)/([^/]+)/([^/]+)$ $1?$2=$3 [N,QSA]
RewriteRule ^([^/]+)/([^/]+)$ $1.php?$1=$2 [L,QSA]

但是使用 PHP 会容易得多:检查请求的 URI 路径(请参阅 参考资料$_SERVER['REQUEST_URI'])并在必要时重定向(请参阅header功能)。

于 2009-07-16T08:57:13.713 回答
0

您可以从该网站即时创建重写规则Mod_rewrite 生成器

于 2009-07-16T09:00:33.490 回答