.htaccess 语言漂亮 URL
.htaccess Pretty URL with languages
我有一个php网站,加载页面如下。
if ( $secretfile && file_exists( $moddir . $name . "/" . $secretfile . ".php" ) ) {
include_once( $moddir . $name . "/" . $secretfile . ".php" );
} else {
if ( isset( $_GET[ 'mod' ] ) ? $_GET[ 'mod' ] : '' ) {
$secretmodule = isset( $_GET[ 'mod' ] ) ? $_GET[ 'mod' ] : '';
if ( $secretmodule && file_exists( $moddir . $name . "/page.php" ) ) {
include_once( $moddir . $name . "/page.php" );
} else {
include_once( $moddir . "404.php" );
}
} else {
include_once( $moddir . "homepage.php" );
}
}
我正在使用 htaccess 来美化 url 如下。
RewriteRule ^([^/]*)/$ /index.php?mod= [L]
RewriteRule ^([^/]*)/([^/]*)/$ /index.php?mod=&file= [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ /index.php?mod=&file=&proid= [L]
我想在会话中添加语言,但我不想更改主要语言(已编入索引)的 url。只有其他语言会添加一个额外的变量。
eg:
main language(de) : www.site.com/module/file/ /index.php?mod=&file= [L]
other lang (en) : www.site.com/en/module/file/ /index.php?lang=mod=&file= [L]
other lang (fr) : www.site.com/fr/module/file/ /index.php?lang=mod=&file= [L]
我只是不确定如何为这些配置设置 htaccess。
根据您显示的尝试,请尝试以下操作。确保你的 index.php 文件和 htaccess 这两个文件都存在于你的情况下的同一个文件夹(root)中。
请确保在测试您的 URL 之前清除您的浏览器缓存。
RewriteEngine ON
##Rules for en OR fr languages URLs to be rewritten in backend.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(en|fr)/([^/]*)/([^/]*)/?$ /index.php?lang=mod=&file= [QSA,NC,L]
##Rules for links which are not started with en OR fr links.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/?$ /index.php?lang=mod=&file= [QSA,NC,L]
您可以在 .htaccess 中拥有这些规则集:
RewriteEngine On
# ignore all files are directories from rules below
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# rules with any lang component
RewriteRule ^(en|fr)/([^/]*)/$ index.php?lang=&mod= [L,QSA]
RewriteRule ^(en|fr)/([^/]*)/([^/]*)/$ index.php?lang=&mod=&file= [L,QSA]
RewriteRule ^(en|fr)/([^/]*)/([^/]*)/([^/]*)/$ index.php?lang=&mod=&file=&proid= [L,QSA]
# rules without any lang component
RewriteRule ^([^/]*)/$ index.php?lang=de&mod= [L,QSA]
RewriteRule ^([^/]*)/([^/]*)/$ index.php?lang=de&mod=&file= [L,QSA]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ index.php?lang=de&mod=&file=&proid= [L,QSA]
我有一个php网站,加载页面如下。
if ( $secretfile && file_exists( $moddir . $name . "/" . $secretfile . ".php" ) ) {
include_once( $moddir . $name . "/" . $secretfile . ".php" );
} else {
if ( isset( $_GET[ 'mod' ] ) ? $_GET[ 'mod' ] : '' ) {
$secretmodule = isset( $_GET[ 'mod' ] ) ? $_GET[ 'mod' ] : '';
if ( $secretmodule && file_exists( $moddir . $name . "/page.php" ) ) {
include_once( $moddir . $name . "/page.php" );
} else {
include_once( $moddir . "404.php" );
}
} else {
include_once( $moddir . "homepage.php" );
}
}
我正在使用 htaccess 来美化 url 如下。
RewriteRule ^([^/]*)/$ /index.php?mod= [L]
RewriteRule ^([^/]*)/([^/]*)/$ /index.php?mod=&file= [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ /index.php?mod=&file=&proid= [L]
我想在会话中添加语言,但我不想更改主要语言(已编入索引)的 url。只有其他语言会添加一个额外的变量。
eg:
main language(de) : www.site.com/module/file/ /index.php?mod=&file= [L]
other lang (en) : www.site.com/en/module/file/ /index.php?lang=mod=&file= [L]
other lang (fr) : www.site.com/fr/module/file/ /index.php?lang=mod=&file= [L]
我只是不确定如何为这些配置设置 htaccess。
根据您显示的尝试,请尝试以下操作。确保你的 index.php 文件和 htaccess 这两个文件都存在于你的情况下的同一个文件夹(root)中。
请确保在测试您的 URL 之前清除您的浏览器缓存。
RewriteEngine ON
##Rules for en OR fr languages URLs to be rewritten in backend.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(en|fr)/([^/]*)/([^/]*)/?$ /index.php?lang=mod=&file= [QSA,NC,L]
##Rules for links which are not started with en OR fr links.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/?$ /index.php?lang=mod=&file= [QSA,NC,L]
您可以在 .htaccess 中拥有这些规则集:
RewriteEngine On
# ignore all files are directories from rules below
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# rules with any lang component
RewriteRule ^(en|fr)/([^/]*)/$ index.php?lang=&mod= [L,QSA]
RewriteRule ^(en|fr)/([^/]*)/([^/]*)/$ index.php?lang=&mod=&file= [L,QSA]
RewriteRule ^(en|fr)/([^/]*)/([^/]*)/([^/]*)/$ index.php?lang=&mod=&file=&proid= [L,QSA]
# rules without any lang component
RewriteRule ^([^/]*)/$ index.php?lang=de&mod= [L,QSA]
RewriteRule ^([^/]*)/([^/]*)/$ index.php?lang=de&mod=&file= [L,QSA]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ index.php?lang=de&mod=&file=&proid= [L,QSA]