删除htaccess中的php扩展名将返回内部服务器错误500

问题描述

我正在尝试创建一个简单的 htaccess 脚本,该脚本会将用户重定向到相应的页面。因此,例如,如果文件/文件夹不存在,则导航到/listing/id用户显示listing.PHP?id=id,或者如果他们导航到/username用户显示{ {1}}。

问题是,当访问profile.PHP?id=username时,我检索到内部服务器错误。但这并不是因为/listing/id处理了这一部分,而是因为我的 htaccess 脚本的RewriteRule扩展名删除部分(我在注释掉时发现了这一点)。我不知道为什么这行不通,因为我相信我设置了正确的标志,并且使用的是正确的代码块。

我的代码

.PHP

示例案例

  • Options +FollowSymLinks -Indexes -MultiViews RewriteEngine On # no PHP extension # (/listing/id will work if this is commented out,but the other pages won't without the .PHP extension) RewriteCond %{REQUEST_FILENAME}.PHP -f RewriteRule ^(.+?)/?$ $1.PHP [L] # redirect to www.* RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^(.*)$ http://www.example.com [R=301,L] # only allow rewriting to paths that don't exist RewriteCond %{REQUEST_FILENAME} -d [OR] RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.+) - [PT,L] # external profile.PHP?id=$id to /$id RewriteCond %{THE_REQUEST} /profile\.PHP\?id=([\w-]+) [NC] RewriteRule ^ /%1? [R=301,L] # /listing/$id RewriteRule ^listing/([\w-]+)/?$ listing.PHP?id=$1 [L,QSA,NC] # /$username RewriteRule ^([\w-]+)/?$ profile.PHP?id=$1 [L,QSA] (索引)有效
  • / 有效文件存在,因此它重定向搜索页面而不是名为search的用户
  • /search 有效 username.PHP 不存在,因此它重定向到个人资料页面
  • /username返回内部服务器错误500 删除htacess的no PHP扩展部分会使此页面正常工作,但是现在其他所有用户都需要/listing/test才能附加)

感谢所有帮助,干杯。

解决方法

按以下顺序尝试您的规则:

# Disable Code Coverage for projects listed in excluded_pods

excluded_pods = ['Pod1','Pod2','Pod3']

post_install do |installer_representation|
    installer_representation.pods_project.targets.each do |target|
        next if !excluded_pods.include?(target.name)

        target.build_configurations.each do |config|
            config.build_settings['CLANG_ENABLE_CODE_COVERAGE'] = 'NO'
        end
    end
end