我正在研究“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来强制语言参数,但我不介意这样。 你的重写现在可以用“/”工作,没有它,但这可能不适合搜索引擎优化?我认为它应该只作为“/ xx /”总是关闭。失踪时可以强制结尾斜线吗? – dvLden
好的尝试我更新的答案。 – anubhava
太棒了!它正在按我的预期工作。 – dvLden