【问题标题】:write .htaccess rewrite website URL multiple parameters写.htaccess 重写网站URL 多个参数
【发布时间】:2017-03-18 17:13:19
【问题描述】:

我是 .htaccess 的新手,在重写某些 URL 时遇到问题。

我的网站是用 php 制作的,有 2 个参数:param1 和 param2。 URL 类似于:

www.website.com/index.php?param1=12345678
www.website.com/index.php?param1=09876543

www.website.com/index.php?param2=abcdefgh
www.website.com/index.php?param2=qwertzui

我想创建一个.htaccess文件来删除“index.php”,将param1和param2替换为2个名称,并在末尾添加“.html”,所以它们变成了:

www.website.com/budget/12345678.html
www.website.com/budget/09876543.html

www.website.com/user/abcdefgh.html
www.website.com/user/qwertzui.html

我有这个代码(从互联网复制)。 它删除了 .php 扩展名,但在内部转发中,它在 URL 的末尾重写了它,忽略了参数。

有人这么好心帮我写代码吗?

谢谢:)

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## hide .php extension snippet

# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

【问题讨论】:

    标签: php .htaccess url-rewriting


    【解决方案1】:

    你可以试试:

    Options +FollowSymLinks -MultiViews
    # Turn mod_rewrite on
    RewriteEngine On
    RewriteBase /
    
    # handle ?param1=...
    RewriteCond %{THE_REQUEST} \s/+(?:index\.php)?\?param1=([^\s&]+) [NC]
    RewriteRule ^ /budget/%1.html? [R=301,L,NE]
    
    # handle ?param2=...
    RewriteCond %{THE_REQUEST} \s/+(?:index\.php)?\?param2=([^\s&]+) [NC]
    RewriteRule ^ /user/%1.html? [R=301,L,NE]
    
    ## hide .php extension snippet
    
    # To externally redirect /dir/foo.php to /dir/foo
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
    RewriteRule ^ %1 [R=301,NE,L]
    
    RewriteRule ^budget/([^/.]+)/?$ index.php?param1=$1 [L,QSA,NC]
    
    RewriteRule ^user/([^/.]+)/?$ index.php?param2=$1 [L,QSA,NC]
    
    # To internally forward /dir/foo to /dir/foo.php
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(.*?)/?$ $1.php [L]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      • 1970-01-01
      • 2020-05-06
      • 1970-01-01
      相关资源
      最近更新 更多