1

这是我的情况。我的应用程序网址显示如下:

example.com/index.php/article/whatever/here

为了从 url 中删除 index.php,我把它放在我的 .htaccess 中并且工作正常:

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

现在,我的问题是我有这样的 include 和 admin.php:

example.com/admin.php/manage/whatever/here

而且我不知道如何在不与 index.php 发生冲突的情况下从 url 中删除 admin.php,因为我已经尝试过了,并且显示了 500 Internal Server Error:

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

编辑

另一个尝试是这个,什么都没有,因为显示了 404 错误:

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

我所有的网址都应该有几个参数:

example.com/this/is/a/large/url/because/is/requiered

编辑2:

我创建了两条规则,每条规则都可以正常工作!!!但两者不能一起工作:

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

2 回答 2

1

尝试:

RewriteEngine On   
RewriteBase / 

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

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

然后至少使用以下方法进行测试:

http://www.example.com/some/url
http://www.example.com/admin/some/url
于 2012-06-27T16:25:49.253 回答
0

您可以稍微修改重写规则以捕获路径的第一部分,并在替换中使用它。试试这个:

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

基本上()创建一个捕获组,因此前两个之间的任何内容都/将被捕获$1,之后的任何内容都将被捕获为$2

请注意,如果您只想将此替换应用于index.phpadmin.php

于 2012-06-27T15:56:15.913 回答