整个域的 .htaccess 文件
.htaccess file for whole domain
我的项目中有这个结构:
domain.com
-index.php
frontend
.htaccess
-index.php
-view1.php
-view2.php
account
-index.php
-view1.php
-view2.php
backend
-class1.php
-class2.php
域名.com/index.php:
include ( 'frontend/index.php' );
域名.com/frontend/index.php:
$str = $_GET['values'];
$str = str_replace ( '../' , '' , $str );
$file = $str . '.php';
if ( file_exists ( $file ) )
{
include ( $file );
}
域.com/frontend/.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?values= [L]
</IfModule>
那么应该调用哪些 url 来获取特定的模板(.php-文件)?
您好!
我不认为你真的想要这个:)
尝试类似的东西
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?values= [L]
现在你有 $_GET[ 'values' ] = 'account/view1'
你可以用 PHP.
来处理它
将你的 htaccess 放在你的 htdocs 根目录下,在你的例子中就是你的 'frontend' 文件夹。
你的新 index.php 可以是这样的
<?php
$str = $_GET[ 'values' ];
$str = str_replace( '../', '', $str );
$vars = explode( '/', $str );
$path = '';
foreach( $vars as $var ) {
$p = strpos( $var, ':' );
if( $p == 0 ) {
$path .= $var . '/';
continue;
}
$_GET[ sub_str( $var, 0, $p ) ] = sub_str( $var, $p + 1 );
}
if( $path ) {
// File
$file = $path . '.php';
if( file_exists( $file ) ) {
include( $file );
exit;
}
// Direction
$file = $path . '/index.php';
if( file_exists( $file ) ) {
include( $file );
exit;
}
// Page not found // comment out if you dont want the default page
// include( '404.php' );
}
// Default Page
include( 'home.php' );
使用此解决方案,您始终与 php 位于同一目录中,并且可以根据需要解释 URL。您可以在您的 URL 或任何您想要的内容中包含 ID,并且您可以将所有标准包含在此文件中。
更新
- 默认页面和目录支持
价值支持。示例:
http://domain.com/account/view/member_id:14
= Result
File: account/view/index.php
$_GET[ 'member_id' ]: 14
未经测试。玩得开心:)
我的项目中有这个结构:
domain.com
-index.php
frontend
.htaccess
-index.php
-view1.php
-view2.php
account
-index.php
-view1.php
-view2.php
backend
-class1.php
-class2.php
域名.com/index.php:
include ( 'frontend/index.php' );
域名.com/frontend/index.php:
$str = $_GET['values'];
$str = str_replace ( '../' , '' , $str );
$file = $str . '.php';
if ( file_exists ( $file ) )
{
include ( $file );
}
域.com/frontend/.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?values= [L]
</IfModule>
那么应该调用哪些 url 来获取特定的模板(.php-文件)?
您好!
我不认为你真的想要这个:) 尝试类似的东西
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?values= [L]
现在你有 $_GET[ 'values' ] = 'account/view1' 你可以用 PHP.
来处理它将你的 htaccess 放在你的 htdocs 根目录下,在你的例子中就是你的 'frontend' 文件夹。 你的新 index.php 可以是这样的
<?php
$str = $_GET[ 'values' ];
$str = str_replace( '../', '', $str );
$vars = explode( '/', $str );
$path = '';
foreach( $vars as $var ) {
$p = strpos( $var, ':' );
if( $p == 0 ) {
$path .= $var . '/';
continue;
}
$_GET[ sub_str( $var, 0, $p ) ] = sub_str( $var, $p + 1 );
}
if( $path ) {
// File
$file = $path . '.php';
if( file_exists( $file ) ) {
include( $file );
exit;
}
// Direction
$file = $path . '/index.php';
if( file_exists( $file ) ) {
include( $file );
exit;
}
// Page not found // comment out if you dont want the default page
// include( '404.php' );
}
// Default Page
include( 'home.php' );
使用此解决方案,您始终与 php 位于同一目录中,并且可以根据需要解释 URL。您可以在您的 URL 或任何您想要的内容中包含 ID,并且您可以将所有标准包含在此文件中。
更新
- 默认页面和目录支持
价值支持。示例:
http://domain.com/account/view/member_id:14 = Result File: account/view/index.php $_GET[ 'member_id' ]: 14
未经测试。玩得开心:)