0

我的网址有很大的问题。我知道如何删除 index.php 表单 url,但问题是我不知道从 url 中删除“?act =”。

我现在的链接是http://localhost/doctrine/public/?act=test我想像http://localhost/doctrine/public/test一样创建它。

我当前的.htaccess 文件放在公用文件夹中:

<IfModule mod_rewrite.c>
        RewriteEngine On

        # Removes index.php from ExpressionEngine URLs
        RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule>

我需要帮助如何做到这一点。

4

2 回答 2

0

在表达式引擎规则之前,您可以添加:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /doctrine/public/?act=$1 [L]

在内部重写请求http: //localhost/doctrine/public/test,例如/doctrine/public/?act=test. 您需要确保内容中的链接看起来像/doctrine/public/test而不是带有查询字符串的链接。如果有您无法控制的链接(例如 google 索引页面),您可以添加以下内容:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /doctrine/public/?\?act=([^&\ ]+)
Rewrite Rule ^ /doctrine/public/%1? [L,R=301]

将浏览器指向没有查询字符串的 URL。

不幸的是,这与您的表达式引擎 URL 不兼容。

于 2013-09-09T17:48:13.103 回答
0

使用此代码:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /doctrine/

    RewriteRule ^(public)/([^/]+)/?$ $1/?act=$2 [L,QSA,NC]

    # Removes index.php from ExpressionEngine URLs
    RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule>
于 2013-09-09T17:48:21.350 回答