2016-04-11 257 views
3

當用戶輸入URL像htaccess的重寫規則

http://example.com/app/abcd123/ 

我想從

http://example.com/app/index.php?param=abcd123 

顯示姬網頁,不必更改瀏覽器的URL。

我把.htaccess文件的應用程序文件夾中的代碼

RewriteEngine on 
RewriteCond %{REQUEST_URI} ^/index.php [NC] 
RewriteCond %{QUERY_STRING} ^param=(.*) 
RewriteRule (.*) http://example.com/app/%1? [R=301,L] 
+0

是'/ app' /一個真正的目錄? – anubhava

+0

是的,我把我的htaccess文件 – moonvader

回答

3

可以在/app/.htaccess使用此代碼:

RewriteEngine on 
RewriteBase /app/ 

# external redirect from actual URL to pretty one 
RewriteCond %{THE_REQUEST} /index\.php\?param=([^\s&]+) [NC] 
RewriteRule^%1? [R=302,L,NE] 

# internal forward from pretty URL to actual one 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+?)/?$ index.php?param=$1 [L,QSA] 
+1

謝謝 - 此代碼按預期工作! – moonvader

1

試試這個.htaccess代碼。它應該幫助你。

確保重寫基地應該是當前目錄的根目錄。

RewriteBase /app/ 

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteRule ^(.*)$ index.php?param=$1 [QSA,NC,L] 

RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^(.*)$ index.php [QSA,NC,L] 

RewriteCond %{REQUEST_FILENAME} -s 
RewriteRule ^(.*)$ index.php [QSA,NC,L] 

在此,如果用戶輸入等http://example.com/app/qwerty呼叫將被像http://example.com/app/index.php?params=qwerty

處理這應該是工作,我測試它。讓我知道你是否面臨任何麻煩。

+1

謝謝 - 代碼作品和我唯一面臨的問題 - 是我的字體停滯加載,因爲他們也在這個文件夾中,並有像「/app/fonts/font.ttf ?ver = 1.4.4「 – moonvader

+1

@moonvader,anubhava的回答對你的情況來說是完美的。 – Sibidharan

0
RewriteEngine On 
RewriteBase /app 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php?param=$1 [L] 

檢查它有:http://htaccess.mwl.be/或其他在線htaccess的測試服務