【问题标题】:htaccess equivalent code to javascript conditional code [closed]javascript条件代码的htaccess等效代码[关闭]
【发布时间】:2014-03-09 09:27:47
【问题描述】:

我想知道是否有与以下 javascript 代码等效的 htaccess 代码。

我移动了一个 wordpress 网站,但它丢失了一些永久链接插件。我记得插件名称,但我不想再次使用它,因为我希望我的网站尽可能少地使用插件。移动站点后的问题是在 GWM 中显示太多未找到的错误。

我是 htaccess 新手,我可以使用“重定向 301”进行重定向。但是如果我使用这个重定向,.htaccess 中会有很多重定向行。我也不想在 htaccess 中有太多的行。然后我使用 javascript 进行重定向,我得到了一个工作的 javascript 代码,如下所示

$(function(){
        var url = this.location.href;
        var last_char = url.substring(url.length - 1);
        var last_five = url.substring(url.length - 5);
        if(!(/category/i.test(url)) && !(last_five=="blog/") && !(last_five=="html/") && last_char == "/"){
            var result = url.substring(0, url.length - 1);
            top.location.href = result+".html";
        }
    });

它在显示 404 页面后重定向。我不希望访问者看到 404 页面,我认为 htaccess 可能会有所帮助,但我不知道该怎么写。我写上面的javascript代码是因为

  1. 大部分未找到的页面只需要删除最后一个斜杠 (/) 字符,然后附加“.html”
  2. 分类页面不需要附加“.html”
  3. “.html/”(以斜线结尾但精细页面不需要重定向)
  4. 我的博客主页是 (myurl.com/blog/) 但不需要删除 斜线和附加 .html

提前感谢所有答案!

【问题讨论】:

标签: javascript regex apache .htaccess redirect


【解决方案1】:

您可以在 .htaccess 中使用此等效规则:

RewriteEngine On

RewriteCond %{REQUEST_URI} /$
RewriteCond %{REQUEST_URI} /category/
RewriteCond %{REQUEST_URI} !blog/$
RewriteCond %{REQUEST_URI} !html/$
RewriteRule ^(.+?)/?$ $1.html [L,R]

【讨论】:

  • 信息量很大。你试过什么网址? .htaccess 的位置是什么,什么不起作用。如果您需要帮助,请花几分钟时间描述您当前的问题状态。
  • 真的很抱歉。我认为我不需要描述 .htaccess 的位置,因为“重定向 301”正在工作。它与根索引文件(myurl.com)处于同一级别。我在 (myurl.com/blog) 安装了 wordpress。由于 (myurl.com/blog) 中的 .htaccess 文件不起作用,我使用根级别 1。请让我知道您需要更多信息。我尝试了http://www.mywebsite.com/blog/foo-bar-foo-foo/,但它没有重定向到http://www.mywebsite.com/blog/foo-bar-foo-foo.html/
  • 1.你从来没有告诉过 WP 2 的存在。在你提供所有事实之前,我不能假设任何事情。 3. 如果有/blog/.htaccess 文件,那么root .htacess 中的上述规则对/blog/ URL 无效。并且在任何情况下,上述规则都有RewriteCond %{REQUEST_URI} !blog/$,这意味着不要为/blog/ 与您的JS 代码相同的目录运行。您可以将此规则用于非/blog/ URL。
  • 先生,我在我的问题第二行中声明了I move a wordpress site! - 我将您的代码放入root/.htaccess 并禁用root/blog/.htaccess,仍然无法正常工作-我将您的代码放入root/blog/.htaccess,也无法正常工作。我该怎么办? - 以下代码包含在/blog/.htaccess <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /blog/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /blog/index.php [L] </IfModule>
  • 对哪个 URL 不起作用?将更新后的规则作为第一条规则放在/blog/.htaccess 下面RewriteBase /blog/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
  • 2015-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多