使用 htaccess 删除扩展后,URL 不能与斜杠一起使用
Posted
技术标签:
【中文标题】使用 htaccess 删除扩展后,URL 不能与斜杠一起使用【英文标题】:URL doesn't work with slash after removing extension using htaccess 【发布时间】:2013-09-10 12:28:22 【问题描述】:我一直在localhost上工作,我的htaccess文件是
Options +FollowSymLinks
Options -Indexes
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule (.*) $1.php [L]
添加htacces代码后,url
localhost/movies/news.php
有效
localhost/movies/news
也可以,但是
localhost/movies/news/
不起作用。它显示“内部服务器错误”。如何使用斜线和不使用斜线。
【问题讨论】:
提示:RewriteLog /tmp/rewrite.log
【参考方案1】:
你试试这个代码:
Options +FollowSymLinks -MultiViews
RewriteEngine On
# Internally forwards movies/news/ to movies/news.php
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %DOCUMENT_ROOT/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
【讨论】:
【参考方案2】:问题是当您添加斜线时,您有 news/.php
并且这不起作用。
更好的解决方案是重写一个 GET 变量,如下所示:
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule (.*) index.php?url=$1 [L]
然后您可以在脚本中过滤 GET 变量并包含您需要的文件或内容。
【讨论】:
这可行,但如何用于我的所有页面?我有27页,需要写27个重写规则吗?我试过 $1.php?url=$1[L] 这不起作用 也许你应该考虑一个更好的项目结构。不要写27页。使用一个 php 文件来生成您的网站。它更容易。以上是关于使用 htaccess 删除扩展后,URL 不能与斜杠一起使用的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 .htaccess 文件删除 .php 扩展名时出现 403 禁止错误
如果 url 扩展名为 .php,则 htaccess 重写将其删除