【发布时间】:2019-04-25 22:10:29
【问题描述】:
我正在尝试重写用户个人资料页面的 URL 以使其更简洁。
https://example.com/user/profile.php?user=username
到
https://example.com/username
我已经四处寻找解决方案并阅读了一些文档,但我无法弄清楚如何正确解决。
我的 .htaccess 中有这段代码
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ user/profile.php?username=$1 [QSA,L]
当我运行此代码时,我每次都会收到内部服务器错误,但我通过 htaccesscheck.com 运行我的代码,它说我的语法一切正常。所以我猜测我的问题源于我对 htaccess 缺乏了解。
我还应该提到我有另一个 RewriteRule 可以从 URL 中删除 .php 扩展名。不确定这是否会影响任何事情,但如果会影响的话,我可以跟进我的整个 .htaccess 文件。
编辑:
我确实检查了错误日志,我想我应该在一开始就把它放在这里,我的错。它输出了这个:
RewriteRule: bad flag delimiters
完整的.htaccess:
Options +Indexes
Options +MultiViews
IndexOptions FancyIndexing
IndexIgnore *
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^(.*)$ user/profile?username=$1 [QSA,L]
【问题讨论】:
-
“我有另一个 RewriteRule 来删除 .php 扩展名” - 你可能有冲突。这可能会导致重写循环(这将在浏览器中显示为 500 错误)。请包含您的
.htaccess文件的全部内容。顺便说一句,如果您收到 500 错误,您应该查看服务器错误日志以了解此错误的详细信息。 -
@MrWhite 我用输出日志错误和我的 .htaccess 的其余部分更新了我的问题。谢谢。
-
搜索RewriteRule: bad flag delimiters 寻找类似案例。无法从文本复制和粘贴到此处重现。 // 无论如何,这两个规则几乎不兼容。