この章: thinkphp URL ルール、URL 擬似静的、URL ルーティング、URL 書き換え、および URL 生成の詳細な紹介
1. URLルール
1. デフォルトでは大文字と小文字が区別されます
2. 大文字と小文字を区別したくない場合は、設定ファイルを変更できます
'URL_CASE_INSENSITIVE'=>true,//URL は大文字と小文字を区別しません
*モジュール名が長すぎる場合:
A. モジュール名が UserGroupAction の場合、複合モジュール (通常は IndexAction) です
次に、モジュールを見つけるための URL を
として記述する必要があります。
http://localhost/thinkphp4/index.php/user_group/index
B. 「URL_CASE_INSENSITIVE」=>false の場合 (大文字と小文字を区別する場合にアクセス可能)
URL は
のように書くこともできます
http://localhost/thinkphp4/index.php/UserGroup/index
2. URL 擬似静的 (tp はデフォルトで擬似静的をサポートします)
http://localhost/thinkphp4/index.php/UserGroup/index.xml
*デフォルトでは、pdo、html、xml... がすべてサポートされています。制限したい場合は、設定を追加するだけです
'URL_HTML_SUFFIX'=>'html|shtml|xml', //擬似静的サフィックスを制限します
3. URL ルーティング
1.ルーティングを開始します
設定ファイルでルーティングのサポートを有効にするには
'URL_ROUTER_ON' => true, //ルーティングを有効にする
2. ルーティングを使用する
1. ルール式設定ルーティング
'URL_ROUTER_ON' => true, //ルーティングを有効にする
'URL_ROUTE_RULES' => array(
'my'=>'Index/index',//静的アドレスルーティング訪問: http://localhost/thinkphp/index.php/my
':id/:num'=>'インデックス/インデックス',/*任意の数値を記述してください。文字でもOKです
動的アドレスルーティングへのアクセス: http://localhost/thinkphp/index.php/10/200
get メソッドを使用して値を渡すことも、モジュールコントローラーで値を取得することもできます
echo $_GET['id'];
エコー $_GET['num'];
*/
'my/:num'=>'Index/index', //動的アドレスと静的アドレスの混合ルーティング http://localhost/thinkphp/index.php/my/200
'year/:year/:month/:date'=>'Index/index',//動的および静的混合アドレス ルーティング: http://localhost/thinkphp/index.php/year/2014/12/21
'year/:yeard/:monthd/:dated'=>'Index/index',//動的および静的混合アドレス ルーティング -- d を追加すると、タイプは数値のみであることを意味します
'my/:id$'=>'Index/index',// $ を追加して、アドレスが my/1000 のみであり、その後に他のコンテンツが存在できないことを示します
);
2. 正規表現によるルーティング設定
//http://localhost/thinkphp/index.php/year/2014/12/21
'/^年/(d{4})/(d{2})/(d{2})/'=>'インデックス/インデックス?年=:1&月=:2&日付=:3'
3. 注意事項:
1. ルートが複雑であればあるほど、より前に配置されます
'URL_ROUTE_RULES'=>配列(
'my/:year/:month:/:day'=>'Index/day', ※複雑なルーティングは前に配置し、後ろに配置すると実行されません
'my/:idd'=>'インデックス/インデックス',
'my/:name'=>'インデックス/インデックス',
)
2. 完全に一致するルーティング ルールとして $ を使用できます (複雑さに関係なく、すべての通常のルールが一致します)
'URL_ROUTE_RULES'=>配列(
'my/:idd$'=>'インデックス/インデックス',
'my/:name$'=>'インデックス/インデックス',
'my/:year/:month:/:day$'=>'インデックス/日',
)、
3. 通常のマッチングを使用します
'URL_ROUTE_RULES'=>配列(
'/^my/(d+)$/'=>'インデックス/インデックス?id=:1',
'/^my/(w+)$/'=>'インデックス/インデックス?名前=:1',
'/^my/(d{4})/(d{2})/(d{2})$/'=>'インデックス/日?年=:1&月=:2&日=:3',
)、
4. URL書き換え
例: http://localhost/thinkphp/index.php/Index/index.html/t/my ----index.php を表示したくないです
以下は Apache の設定プロセスです。参照してください:
1. mod_rewrite.so モジュールが httpd.conf 設定ファイルにロードされます
2.AllowOverride None なしをすべてに変更します
3. URL_MODEL が 2 に設定されていることを確認します (この手順は省略します)
4. 次の内容を .htaccess ファイルとして保存し、エントリーファイルと同じディレクトリに配置します
リライトエンジンオン
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$index.php/$1[QSA,PT,L]
Apacheを再起動すると、元の
からアクセスできます
http://localhost/thinkphp/Index/index.html/t/my --URL アドレスが簡素化され、SEO のサポートが強化されました
5. URL 生成 (詳細はマニュアルに記載)
パブリック関数 url(){
echo U('Index/add'); // Index モジュールの追加操作の URL アドレスを生成します
///thinkphp/index.php/index/add
}
前の記事 http://qdxinbj8.2cto.com/index.php?m=content&c=content&a=public_preview&steps=1&catid=75&id=363637