【问题标题】:Wordpress .htaccess Rewrite doesn't take effectWordpress .htaccess 重写不生效
【发布时间】:2016-02-29 02:00:15
【问题描述】:

我在 wordpress .htaccess 中有这些规则:

<IfModule mod_speling.c>
CheckSpelling on
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/

RewriteCond %{THE_REQUEST} (\.htm|\.html)
RewriteRule ^(.*)(\.htm|\.html)$ http://test.com/wordpress/$1 [R=301,L]

RewriteCond %{REQUEST_URI} !^(/wordpress/|/wordpress/images/)
RewriteRule ^(.*\.jpg)$ /wordpress/$1 [R=301,L]

我需要触发其他规则,该规则将仅对文件名应用 %20 替换,但它不会生效:

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule (.*)(\ |\%20)(.*)  /wordpress/$1-$2 [R=301,L]

我需要测试的 URL 示例是:

http://test.com/some Folder/some Other subfolder/Some File Name.jpg

需要的结果:

http://test.com/wordpress/some Folder/some Other subfolder/some-file-name.jpg

我哪里做错了?我怎样才能做到这一点?

【问题讨论】:

    标签: wordpress .htaccess redirect mod-rewrite url-rewriting


    【解决方案1】:

    在您的 DocumentRoot/.htaccess 中尝试使用此规则将空格替换为连字符:

    RewriteRule ^(?:wordpress/)?(.*/)?([^\s\x20/]*)[\s\x20]+([^/]*)$ /wordpress/$1$2-$3 [R=302,L,NE]
    

    【讨论】:

    • 它不起作用..我尝试过使用正则表达式正向预测来替换 (\ |\%20)(?=([^\/])*(\.htm| .\html|\.jpg)) 问题是,如果我将它放在 WP 插件(重定向)中,这根本不起作用,但并非所有其他重定向都被触发。不会发生小写转换。仅针对 jpg 的 html 文件不会触发替换。我也无法在重写中使用该前瞻来尝试它。
    • 不,它们正是我向您展示的方式,我需要使用该规则从非 wordpress 网站重定向到 wordpress 网站..
    • 在这种情况下,我给定的规则应该放在 DocumentRoot 中,即高于 wordpress 目录的级别
    • x20 在您的规则中究竟意味着什么?
    猜你喜欢
    • 1970-01-01
    • 2014-09-23
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多