【问题标题】:.htaccess to remove file extension not working.htaccess 删除文件扩展名不起作用
【发布时间】:2014-06-18 13:38:26
【问题描述】:

我有公共的 html 文件夹,其中存储了一些文件和文件夹。然后我在其中创建了一个文件夹。该文件夹包含一些文件和一个文件夹“Admin”,其中包含与我的管理面板相关的文件,用于浏览我的站点成员数据。

现在我在公共 html 文件夹中的 .htaccess 文件中使用了以下代码,它删除了所有页面的 php 扩展名。但是当我尝试登录到我的管理面板时,登录失败。

例如www.abc.com >> 这里的.htaccess 文件有如下代码。

它适用于 www.abc.com 中的文件以及 www.abc.com/xyz/index.php 中的文件和其他文件。但是当尝试 www.abc.com/xyz/admin/index.php 登录时,此页面只是刷新但不允许成功登录。

.htaccess 中使用的代码如下:

RewriteEngine On  

RewriteCond %{THE_REQUEST} \s/+(?:index)?(.*?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]

RewriteCond %{THE_REQUEST} /index [NC]
RewriteRule ^(.*?)index([/.]|$) /$1 [L,R=302,NC,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]

【问题讨论】:

    标签: php .htaccess mod-rewrite


    【解决方案1】:

    尝试这些规则以避免重定向 POST 请求:

    RewriteEngine On  
    
    RewriteCond %{REQUEST_METHOD} !POST
    RewriteCond %{THE_REQUEST} \s/+(?:index)?(.*?)\.(?:php|html)[\s?] [NC]
    RewriteRule ^ /%1 [R=301,L,NE]
    
    RewriteCond %{REQUEST_METHOD} !POST
    RewriteCond %{THE_REQUEST} /index [NC]
    RewriteRule ^(.*?)index([/.]|$) /$1 [L,R=302,NC,NE]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    
    RewriteCond %{DOCUMENT_ROOT}/$1.php -f [NC]
    RewriteRule ^(.+?)/?$ /$1.php [L]
    
    RewriteCond %{DOCUMENT_ROOT}/$1.html -f [NC]
    RewriteRule ^(.+?)/?$ /$1.html [L]
    

    【讨论】:

    • 是的......它工作......谢谢......但是如何使用代码来删除 .html 扩展名呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 2019-01-03
    • 2016-12-28
    相关资源
    最近更新 更多