【发布时间】:2017-05-24 12:12:05
【问题描述】:
我的目标是从 url 中删除 .php 扩展名并创建 Semantic URL 多语言站点。这是我的 .htaccess 规则:
# Turn mod_rewrite on
RewriteEngine On
#Remove .php extensions from files
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]
#Create Semantic url
RewriteRule ^event/([A-Za-z0-9-\+]+)/([A-Za-z0-9-\+]+)/?$ calendar?region=$1&news_id=$2 [L,NC]
#Handle language switch.
RewriteRule ^(ru)/(.*)$ $2?sitelang=2 [L,QSA]
RewriteRule ^(ru)$ $1?sitelang=2 [L,QSA]
RewriteRule ^(en)/(.*)$ $2?sitelang=1 [L,QSA]
RewriteRule ^(en)$ $1?sitelang=1 [L,QSA]
RewriteRule ^(.*)$ $1?sitelang=1 [L,QSA]
#404 Document /404.php
ErrorDocument 404 /404
所以我有一些情况,当这个规则有效时,也有什么时候无效。所以这里是工作的:
- domain.com/ru/event/region/some-event-name
- domain.com/event/region/some-event-name
而那些不起作用(当我添加一些东西时,粗体),导致 500 错误:
- domain.com/events/region/some-event-name
- domain.com/events/region/some-event-name/
- domain.com/event/region/some-event-name/某事
【问题讨论】:
标签: php apache .htaccess redirect mod-rewrite