我正在尝试从网址中删除index.php:
这是有效的
http://server/bw/index.php/test
这不起作用
http://server/bw/test
我尝试更改.htaccess并在网上观看我发现它应该是这样的:
RewriteEngine On
RewriteBase /bw/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
我尝试以这种方式编辑它:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
或以这种方式:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /bw/index.php [QSA,L]
或以这种方式:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
但是当我尝试访问http://server/bw/test
时,它会说:
Not Found
The requested URL /bw/test was not found on this server.
Apache/2.2.15 (CentOS) Server at server Port 80
我检查httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
内部是否已启用..我现在不知道该怎么办..
我该如何解决?请帮帮我!
答案 0 :(得分:6)
试试这个,例如,在WordPress中
RewriteRule . index.php [L]
或者这个,例如, Lavavel PHP框架
RewriteRule ^(.*)$ index.php/$1 [L]
您也可以考虑添加
RewriteCond %{REQUEST_FILENAME} !-d
在RewriteRule之前还要排除现有目录,而不仅是现有文件。但这取决于你。
答案 1 :(得分:0)
对我来说,我从Dehalion的回答中得到了这条线:
RewriteRule . index.php [L]
因此在请求网址中看不到index.php(或任何xyz.php)文件
http://localhost/demo1/mycompany/hello/Jim
有以下警告:
您已定义此路线:
$ app-> get('/ mycompany / hello /:name',doHello);
根元素(对于route / mycompany / ..) 也是 文件的名称。
也就是说,路由存在于名为“mycompany.php”
是的,这有点像黑客......但是因为我发现apache配置令人困惑/恐吓:) ...我认为这个解决方案足够稳定以满足要求。
答案 2 :(得分:0)
就我而言,我更新了AllowOverride All
,
然后运行sudo a2enmod rewrite
以避免内部500错误,然后重新启动Apache service apache2 restart