Apache URL 重写加号未按预期工作

Apache URL 重写加号未按预期工作

我想用以下两种模式重写我的网站网址(注意:有很多这样的网址,我希望使用一个规则来重写它们)

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 查询字符串。

相关内容