7

たとえば、ルート ディレクトリにone.phptwo.phpという 2 つのファイルがあります。実際に物理ディレクトリをen + deにすることなく、これらのURLを介してそれらにアクセスしたいと思います。

  • mydomain.com/en/ one
  • mydomain.com/en/ 2
  • mydomain.com/de/one _
  • mydomain.com/de/two _

したがって、最初のディレクトリは「無視」され、言語設定を含む GET 変数を php ファイルに渡すだけです。2 番目のディレクトリは、拡張子のない php ファイルです。

これは、これまでのところ、ファイル拡張子を失うために htaccess で使用しているものです。

RewriteEngine on  
RewriteCond %{REQUEST_FILENAME} !-d   
RewriteCond %{REQUEST_FILENAME}\.php -f   
RewriteRule ^(.*)$ $1.php

更新/解決策
これは非常に便利です:言語検出のための .htaccess ルール

RewriteRule ^(en|de|fr)/(.*)$  $2?lang=$1 [L,QSA]   
RewriteRule ^(.*)$  $1?lang=en [L,QSA]

もう 1 つの追加質問
mydomain.com/en/ one /id45
変数として id45 を one.php に渡したい場合、htaccessのどの行を追加する必要がありますか?

4

1 に答える 1

2

このルールを試すことができます:

DirectoryIndex index.php index.html
DirectorySlash On

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$2.php -f
RewriteRule ^(en|de|fr)/([^/]+)(?:/(.*)|)$ $2.php?lang=$1&var=$3 [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-d   
RewriteCond %{REQUEST_FILENAME}.php -f   
RewriteRule ^(.+?)/?$ $1.php [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]{2})/?$ index.php?lang=$1 [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ $1?lang=en [L,QSA]
于 2013-09-24T08:17:28.220 に答える