无论我尝试什么,htaccess或javascript方法都无法删除index.php

时间:2011-02-19 11:45:02

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

所以我一直试图从我的网址中删除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

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

2 个答案:

答案 0 :(得分:1)

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

重定向到root:

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

答案 1 :(得分:0)

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

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

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

至于javascript location.href是一个字符串和字符串的方法替换返回更改的值,它不会就地修改字符串。因此在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/更适合询问重写规则。