【问题标题】:Removing .php extension in URLs except sub directory删除 URL 中的 .php 扩展名,子目录除外
【发布时间】:2016-03-17 00:16:16
【问题描述】:

您好,我使用下面的代码从 .htaccess 中的 url 中删除扩展名 .php index.php -------- 索引,它工作正常。

请帮助我阻止删除子目录中的 .php 扩展名,例如:www.example.com/cp/index 而不是:www.example.com/cp/index.php

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [NC,L,QSA,R=301]

以下操作无效:

RewriteEngine On
RewriteBase /

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

我可以在异常目录中具体调用cp吗

【问题讨论】:

  • 请改写这句话“我可以在异常目录中具体调用cp吗”,因为您无法理解您想要实现的目标。

标签: php apache .htaccess mod-rewrite url-rewriting


【解决方案1】:

您可以使用以下内容:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
#####exclude /cp folder####
RewriteCond %{REQUEST_URI} !^/cp
#################
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /((?!cp)[^.]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [NC,L,QSA,R=301]

【讨论】:

  • 未找到 在此服务器上未找到请求的 URL /cp/login。此外,在尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。我认为我们不需要删除 cp 子目录中的 .php RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php RewriteRule ^/?(.*)\.php$ /$1 [NC,L,QSA,R=301]
猜你喜欢
  • 2022-11-25
  • 2020-08-11
  • 1970-01-01
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
相关资源
最近更新 更多