我有以下规则来工作,这组合:mod_rewrite的 - 麻烦的规则
- 只上存在
- 排除包含图像的任何文件,文件行事|在他们的URI CSS | JS
- 附加斜线来请求URI
重写规则:
RewriteEngine on
DirectorySlash Off
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/(images|js|css)$
RewriteRule ^(.*[^/.])$ /$1/ [R=301,L]
我现在需要正确地重定向我家的URI的,像这样:
http://www.example.com/sitemap/
- >http://www.example.com/index.php?page=sitemap
我尝试以下方法:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/.])$ index.php?page=$1 [R=301,L,NC]
但我得到一个页面没有找到,想必因为$ 1正在喂食一些有斜线的东西。我认为[^/]
会删除它,但显然不是。
有人可以解释我哪里错了吗?
为什么你需要**重定向**(URL将在浏览器中更改)?通常,人们希望保持“好”的URL,并在浏览器中URL保持不变时重写URL(内部重定向)。那是故意的还是错误的(我指的是你的第二条规则 - 'R = 301'部分)? – LazyOne
这是一个错误,我对重定向位的工作原理有些朦胧。你说得对,我想保持漂亮的网址。 –