【问题标题】:can't remove index.php no matter what i try, htaccess or javascript method无论我尝试什么,htaccess 或 javascript 方法都无法删除 index.php
【发布时间】:2011-06-30 08:26:36
【问题描述】:

所以我一直试图从我的网址中删除 index.php 并没有成功

这些方法我都试过了

.htaccess

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

javascript

window.location.href.replace('index.php', '');

我的网址看起来还是这样 www.example.com/index.php

如果我访问 www.example.com 并加载 index.php 并且不会显示它,我的网站可以正常工作,这是正常行为。但是,如果我用 /index.php 输入它,js 或 htaccess 将不会删除,只会显示 www.example.com

我不知道该尝试什么....

【问题讨论】:

    标签: javascript apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    根据您的问题,我假设您想从 example.com/index.php 重定向到 example.com/?

    重定向到根目录:

    RewriteRule ^index.php$ / [R=302,L]
    

    【讨论】:

    • 我非常想从任何出现在 URL 栏中的引用中删除 index.php ;_)
    • @s2xi 你为什么要链接到 /index.php 呢?你为什么不直接链接到/?无论哪种情况,重定向标志 (R=302) 都可以解决您的问题。
    • 我没有链接,但我想看看如果我输入 www.example.com/index.php,index.php 是否会被删除。
    【解决方案2】:
    RewriteRule ^(.*)$ /index.php?/$1 [L]
    

    实际上并没有从 URL 中删除 index.php,而是添加了它。你应该使用类似的东西:

    RewriteRule ^index\.php\?(.*)$ /$1 [L]
    

    至于javascriptlocation.href是一个字符串,字符串的方法replace returns改变的值,它不会就地修改字符串。因此在 js 中你可以使用这样的东西:

    location = location.href.replace('index.php', '');
    

    window 可能会被省略,除非您在某些本地上下文中使用此代码,其中存在另一个名为 location 的变量。而location = ... 等价于location.href = ...
    如果您希望当前 URL(带有“index.php”)不保存在浏览历史记录中,您可以使用这个:

    var newURL = location.href.replace('index.php', '');
    location.replace(newURL);
    

    同样:location.href 是一个字符串,而 location 本身是一个对象。它的替换方法是另一回事。
    https://developer.mozilla.org/en/DOM/window.location#Methods

    一般来说,我更喜欢为此重写,但https://serverfault.com/ 是询问重写规则的更好地方。

    【讨论】:

    • js在这个上下文中使用$(window).bind('hashchange')...让我试试RewriteRule
    • 嘿,奇怪的是我尝试了 js 方法,它一直在循环我的网站
    • 因为 js 从 URL 中删除了 index.php,而您的第三条规则 RewriteRule ^(.*)$ /index.php?/$1 [L] 将其添加回来。
    • 是的,我想到了 :_) 在尝试 js 方法之前,我已经删除了 htaccess。这就是为什么我有点困惑
    • 您是否已将location 的代码包装到某个if 条件中?否则js会在页面加载时执行该代码,这会导致问题,你描述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    相关资源
    最近更新 更多