2017-02-28 11 views
1

私は非常に単純な要件を持っています。.htaccess with PHP GET

すべての.php拡張子を削除する必要がありますし、私のGETリクエストURL

http://domain.com/product.php?name=<product_name> 

は、私は次のことを試してみました

http://domain.com/product/<product_name> 

になる必要があります。

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^home/?$ index.php [NC,L] 
RewriteRule ^product/([A-Za-z]+)/?$ product.php?name=$1 [L] 

RewriteRule ^([^\.]+)$ $1.php 
RewriteRule ^([^\.]+)$ $1.html [NC,L] 

私はこれを行うとすべての.php & .html拡張子は削除されていますが、GETページのCSSとjsが壊れていますまた、この試み

RewriteRule ^([A-Za-z]+)/?$ product.php?name=$1 [L] 

は、その後の.php拡張子が示されているか、それはGETリクエストのページに移動します。

新しい.htaccessです。今すぐ私の頭を壊す!

+0

取得ページでjsとcssの完全なURLを指定してください。 – Ruby

+0

ええ、私は* *の使用について考えています。これは動作します!しかし、それが正しいことであるかどうかはわかりません。 – Ashwin

答えて

0

は、以下のことを試してください:あなたの.htaccessファイルで

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks -MultiViews 
    # Turn mod_rewrite on 
    RewriteEngine On 
    RewriteBase/

    ## If the request is for a valid directory 
    RewriteCond %{REQUEST_FILENAME} -d [OR] 
    ## If the request is for a valid file 
    RewriteCond %{REQUEST_FILENAME} -f [OR] 
    ## If the request is for a valid link 
    RewriteCond %{REQUEST_FILENAME} -l 
    ## don't do anything 
    RewriteRule^- [L] 

    # if requested files exists in /public then forward it there 
    RewriteCond %{DOCUMENT_ROOT}/public/$1 -f 
    RewriteRule ^(.+?)/?$ /public/$1 [L] 

    # if requested files doesn't exist in /public then forward it to requested php file 
    RewriteCond %{DOCUMENT_ROOT}/$1 !-f 
    RewriteRule ^(.+?)/?$ %{REQUEST_FILENAME}.php [L] 
</IfModule> 
+0

/publicのurコードの最初の部分を試しました。 – Ashwin

0

使用この:http://domain.com/product/<product_name>

RewriteEngine On 
RewriteRule ^product/([^/]*)$ /product.php?name=$1 [L] 

は、あなたがこれをテストする前に、あなたのキャッシュをクリアしていることを確認し、それはURLを残す必要があります。

+0

CSS/JS/imgの中断! – Ashwin