漂亮的网址.htaccess

时间:2014-10-22 05:50:36

标签: apache .htaccess mod-rewrite

我总是和.htaccess纠缠在一起,所以希望有人可以帮我写一个。 我在网上找到了类似于我想要的东西,但我不够自信 重写他们的重写:P

我想要这个:

/foo/ = index.php?a=foo
/foo/bar/ = index.php?a=foo&b=bar
etc. up to /foo/bar/baz/cat/dog/ (&e=dog)

我还希望index.php不可见,以便/index.php重写为/.

另一件事,我希望总是有一个尾随斜线,因此能力 做...

/foo/bar/baz/?another=whatever

我有/ images /这样的目录,我不希望这个目录适用于, 所以我必须为此制作一个白名单,还是有某些我可以使用的重定向?

干杯!

1 个答案:

答案 0 :(得分:0)

您不需要将目录列入白名单。这就是RewriteConds的用途。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d

检查以确保它不是真实文件或真实目录然后执行RewriteRule。

请在.htaccess文件中尝试以下规则,以获得所需内容。

RewriteEngine On
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+) index.php?a=$1&b=$2&c=$3&d=$4&e=$5&%{QUERY_STRING} [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+) index.php?a=$1&b=$2&c=$3&d=$4&%{QUERY_STRING} [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+) index.php?a=$1&b=$2&c=$3&%{QUERY_STRING} [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+) index.php?a=$1&b=$2&%{QUERY_STRING} [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+) index.php?a=$1&%{QUERY_STRING} [L]