![Apache URL 重写加号未按预期工作](https://linux22.com/image/578286/Apache%20URL%20%E9%87%8D%E5%86%99%E5%8A%A0%E5%8F%B7%E6%9C%AA%E6%8C%89%E9%A2%84%E6%9C%9F%E5%B7%A5%E4%BD%9C.png)
我想用以下两种模式重写我的网站网址(注意:有很多这样的网址,我希望使用一个规则来重写它们)
www.hetaoblog.com/hello
www.hetaoblog.com/hello/
到
**www.hetaoblog.com/myblogs/post/hello.jhtml**
所有其他情况都不http://www.hetaoblog.com/
应改变;
我试过了
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule . /index.php [L]
RewriteRule ^([^/]+)/$ /myblogs/post/$1.jhtml [L]
RewriteRule ^(.*)$ /myblogs/post/$1.jhtml [L]
</IfModule>
和
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule . /index.php [L]
RewriteRule ^(.+)/$ /myblogs/post/$1.jhtml [L]
RewriteRule ^(.*)$ /myblogs/post/$1.jhtml [L]
</IfModule>
和
RewriteRule ^([^/]+)+/$ /myblogs/post/$1.jhtml [L]
然而,它们适用于我想要的两种情况,但它们都会重写
www.hetaoblog.com/
到
www.hetaoblog.com/myblogs/post/.jhtml
它看起来像 + 号,这应该意味着至少有一次事件没有发生。
答案1
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?$ /myblogs/post/$1.jhtml [L]
由于您的行不适用于第二条规则,因此您/
正在进行重定向。RewriteCond
我仍然不确定你是如何确定它是如何重写的/myblogs/post/.jhtml
- 不过,这对于你所拥有的规则来说根本没有意义。
Wordpress 可能仍会干扰;打开一个RewriteLog
位置并进行设置RewriteLogLevel 9
,以便我们可以确认 Apache 运行正常。
答案2
最简单的一个是:
RewriteRule /hello/? /hello.jhtml [L]
这将与您指定的两个 URI 完全匹配,而不会匹配其他 URI。
答案3
您是否尝试过简单:
RewriteRule ^/([A-Za-z0-9]+|[A-Za-z0-9]+/)$ /myblogs/post/$1.jhtml [L]
您可能还需要指定 rewritecond 查询字符串。