2016-10-27 24 views
1

這是我的.htaccess如何設定正確的重寫規則爲epmty查詢

RewriteEngine On 
RewriteBase/
RewriteRule ^(.*) data.php?chn=$1 [L,QSA] 

我有2個PHP文件。

的index.phpdata.php

我想打電話的index.php當請求是domain.com/data.php當請求的是domain.com/(anything)

+0

你在哪裏主持?他們是否允許.htaccess覆蓋? – WEBjuju

+0

web apache2 sir –

+0

澄清,您託管公司的名稱是什麼?或者如果你是自己託管,你可以驗證你有允許覆蓋所有ht​​tp://stackoverflow.com/questions/18740419/how-to-set-allowoverride-all – WEBjuju

回答

0

要的index.php重新路由...

if (!empty($_GET['chn'])) { 
    require('data.php'); 
    exit(); 
} 

data.php已經將有$ _GET [ 'CHN']提供給它。

,或者如果你不排隊過一個GET變量,然後你可以檢查REQUEST_URI和做同樣的事情:

if (@$_SERVER['REQUEST_URI']!='/')) { 
    require('data.php'); 
    exit(); 
} 
0
RewriteEngine On 
    RewriteRule ^([^\.]+)$ $1.php [NC,L] 
    RewriteRule ^/(\d+)*$ ./data.php?chn=$1 

試試這個。

注:當您需要的情況下使用的.htaccess,將/域名後會觸發第二重寫規則的情況下,這意味着用戶將嘗試打開字面上domain.com/data.php?chn=

+0

它的工作!謝謝 –

0

你需要你的正則表達式模式從改變(+),以避免重寫您的主頁,否則爲/也將被改寫爲data.php請求(*):

試試這個規則:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !^/data\.php [NC] 
RewriteRule ^(.+) data.php?chn=$1 [L,QSA] 
0

的工作!謝謝大家使用此代碼:

RewriteEngine On 
RewriteBase/
RewriteRule ^([^\.]+)$ data.php?chn=$1 [L,QSA]