所以我一直试图从我的网址中删除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
我不知道该尝试什么......
答案 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/更适合询问重写规则。