使用htaccess将URL重写为www.xyz.com/index.php?id=xyz到www.xyz.com/xyz

时间:2015-03-21 14:22:52

标签: php .htaccess url

如果网址包含参数details.php

,我想要包含商品详情id=xyz

重写

url www.example.com/index.php?id=xyz 

www.example.com/xyz.html 

使用htaccess

htaccess我正在使用

RewriteEngine On
RewriteBase /

RewriteRule ^([^.]+)\.html$ index.php?id=$1 [L,QSA,NC]

4 个答案:

答案 0 :(得分:1)

RewriteCond %{THE_REQUEST} \s/index\.php\?id=([_0-9a-zA-Z-]+)\s [NC]
RewriteRule ^%1? [R=301,L]
RewriteRule ^([_0-9a-zA-Z-]+)$ /index.php?id=$1 [L]

RewriteCond %{THE_REQUEST} \s/index\.php\?id=([_0-9a-zA-Z-]+)\s [NC]
RewriteRule ^ %1.html? [R=301,L]
RewriteRule ^([_0-9a-zA-Z-]+?)(?:\.html)?$ /index.php?id=$1 [NC,L]

完美无缺

答案 1 :(得分:0)

您可以在DOCUMENT_ROOT/.htaccess文件中使用此代码:

RewriteEngine On
RewriteBase /

RewriteRule ^([^.]+)\.html$ index.php?id=$1 [L,QSA,NC]

答案 2 :(得分:0)

使用此.htaccess重写:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^.]+)\.html$ index.php?id=$1 [L,QSA,NC]
</IfModule>

确保您已启用mod_rewrite(如果可用,请使用PHP中的phpinfo()apache_get_modules()

答案 3 :(得分:0)

请在www.example.com/.htaccess文件中尝试以下配置, 我只是测试它并在我的环境中工作。

//htaccess file content
RewriteEngine On  
RewriteRule ^(\w+).html$ /index.php?id=$1 [L]