【发布时间】:2016-01-08 23:29:56
【问题描述】:
我正在研究“ManualTranslation”课程,但我被困在 .htaccess 部分。
我正在尝试仅将此查询 ?language=xx 重写为 /xx/。
到目前为止,我设法使它工作,不确定它是否好用或合适......但它肯定缺少一件事。如果出于某种原因 - 有人尝试通过以下方式手动选择语言:
http://domain.com/it 并且忘记添加斜杠,我的 .htaccess 片段失败。因此,如果此查询参数中缺少该斜杠,它应该自动添加该斜杠。
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z]{2})/(.*)$ $2?language=$1 [QSA]
所以现在,这只适用于这种方式:
http://domain.com/it/ 但不是 http://domain.com/it 因为缺少应该存在的尾部斜杠。
如果有人能告诉我我错过了什么?
我还想知道如果找不到语言,是否有机会使用php 删除重写的查询字符串。现在我基本上只是重定向回当前文件,我对它不满意......
if ( isset($query) && !$this->isAllowed($query) )
{
header("Location: {$_SERVER['PHP_SELF']}");
exit;
}
【问题讨论】:
标签: php regex apache .htaccess mod-rewrite