如何解决删除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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。