Mod rewrite htaccess重写
我想把Mod rewrite htaccess重写,mod-rewrite,Mod Rewrite,我想把/anything.anyextension改写成/?post=anything 例如: /this-is-a-post.php转换为/?post=this-is-a-post或 /this-is-a-post.html转换为/?post=this-is-a-post甚至 /this-is-a-post/转换为/?post=this-is-a-post 我试过了 RewriteRule ^([a-zA-Z0-9_-]+)(|/|\.[a-z]{3,4})$ ?$1 [L] 但它不起作
/anything.anyextension
改写成/?post=anything
例如:
转换为/this-is-a-post.php
或/?post=this-is-a-post
转换为/this-is-a-post.html
甚至/?post=this-is-a-post
转换为/this-is-a-post/
/?post=this-is-a-post
RewriteRule ^([a-zA-Z0-9_-]+)(|/|\.[a-z]{3,4})$ ?$1 [L]
但它不起作用
非常感谢您的帮助。如果您可以访问主服务器配置,请使用以下命令:
RewriteRule ^/(.+)\.\w+$ /?post=\1 [L]
如果没有,并且您被迫将其放入.htaccess
文件中,您可以尝试
RewriteRule ^(.+)\.\w+$ /?post=\1 [L]
在任何一种情况下,这都假设您将只使用单个路径组件重写URL(即,如果您收到类似
/path/anywhere.anyextension
的请求,则可能无法按预期工作,需要修改重写规则以处理此问题)您需要更好的方法来确定何时应用重写规则,否则,除非定义了异常,否则页面将无法显示外部JS或CSS
(或核心,Sapphire)提供了一个很好的方法,比如:
RewriteEngine On
RewriteCond %{REQUEST_URI} !(\.css)|(\.js)|(\.swf)$ [NC]
RewriteCond %{REQUEST_URI} .+
RewriteRule ^([^\.]+) /?post=$1 [L,R=301]
这要求URI不为空,不为JS、CSS或SWF,并重定向回根目录:
http://localhost/this-is-a-post.php
http://localhost/?post=this-is-a-post
如果您不希望重定向,但正在进行处理,请删除重定向规则
R=301
,这将无法捕获任何没有重定向的条目extensions@Ast:是的,这是期望的行为。