【发布时间】:2018-12-21 21:23:00
【问题描述】:
我想向我的网站添加另一种语言(用 PHP 7 编写的应用程序)。 我发现,良好的 SEO 实践表明,我网站上的每个页面都应该可以从不同的 URL 访问,具体取决于语言。
目前我的 .htaccess 看起来像这样:
RewriteEngine on
Options +FollowSymLinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([a-zA-z0-9-]+)$ $1.php [NC,L]
因此,当用户输入(或单击链接)http://example.com/contact 时,他们会获得页面 contact.php(如果存在)。 我想要实现的是,将http://example.com/en/contact 重定向到同一个文件contact.php,但使用$_GET 参数并且仍然将/contact 重定向到contact.php(没有此参数)。我以为会是:
... everything from above code sample and then:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^en/([a-zA-z0-9-]+)$ $1.php?lang=en [NC,L]
但它不起作用。任何想法为什么以及如何使这项工作?
【问题讨论】:
-
使用 QSA 标志?
[QSA,NC,L] -
您使用的是 MVC 模式吗?你有路由组件吗?
-
如果你真的在地址栏中输入
/contact.php?lang=en会发生什么?这是否按预期工作? -
是的,/contact.php?lang=en 工作正常。我只想将 /en/contact 重定向到这个地址,所以我不必在我网站上的每个链接中传递 GET 参数
-
我认为当它重新路由
$1.php尝试删除RewriteCond %{REQUEST_FILENAME}.php -f条件时,它会打结......我认为无论如何它们都是多余的。
标签: .htaccess mod-rewrite seo