【发布时间】:2015-06-29 15:48:56
【问题描述】:
我正在尝试从扩展和 php 中清理 url 获取语言变量:
test.com/en/ => test.com/?lang=en
test.com/ro/page/ => test.com/page.php?lang=ro
这是我的 .htaccess:
AddDefaultCharset utf-8
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
RewriteRule ^([^/]+)/([^.]+)\.php /$2.php?lang=$1 [L,NC,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
虽然它转换 test.com/ro/page => test.com/page.php?lang=ro 还有 test.com/ro/index => test.com/index.php?lang=ro
我无法让它转换索引页面 test.com/en/ => test.com/?lang=en
你们能帮我实现这个吗?
【问题讨论】:
-
将所有内容路由到
index.php并从那里包含正确的文件不是更容易吗? -
在这个阶段,当网站完成并且结构已经建立时,修复htaccess文件可能是最简单的选择。
-
只是一个建议:-)
标签: php .htaccess clean-urls lang trailing-slash