【问题标题】:rewriting parameters .htaccess inside a folder重写文件夹内的参数.htaccess
【发布时间】:2014-01-31 12:24:27
【问题描述】:

我要网址

domain.com/user/user.php?id=sam

domain.com/user/sam

我在user 文件夹之外已经有以下 .htaccess..

Options -MultiViews 
RewriteEngine On 
RewriteBase /

RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$" 
RewriteRule ^(.*)\.php(\?.*)?$ $1$2 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ $1.php [L]

我尝试了很多解决方案,除了这个(放在用户文件夹中)没有工作

RewriteEngine On

RewriteRule ^([a-zA-Z0-9_-]+)$ user/user.php?id=$1 
RewriteRule ^([a-zA-Z0-9_-]+)/$ user/user.php?id=$1

但这样做是将网址重定向到domain.com/user/?id=

我该如何解决?

更新:

Options -MultiViews 
RewriteEngine On 

ErrorDocument 404 404.shtml
ErrorDocument 401 401.shtml
ErrorDocument 403 403.shtml
ErrorDocument 400 400.shtml
ErrorDocument 500 500.shtml

## don't touch admin/yshout/ URIs 
RewriteRule ^admin/yshout/ - [L,NC]

## don't touch controller/ URIs 
RewriteRule ^controller/ - [L,NC]

## don't touch server/ URIs 
RewriteRule ^server/ - [L,NC]

RewriteCond %{THE_REQUEST} \ /+user/user\.php\?id=([^&\ ]+) 
RewriteRule ^ /user/%1? [L,R=301]
RewriteRule ^([a-zA-Z0-9_-]+)/?$ user.php?id=$1 [L]

RewriteEngine On 
RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$" 
RewriteRule ^(.*)\.php(\?.*)?$ $1$2 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ $1.php [L]

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    您无法匹配重写规则中的查询字符串。试试:

    RewriteCond %{THE_REQUEST} \ /+user/user\.php\?id=([^&\ ]+)
    RewriteRule ^ /user/%1? [L,R=301]
    

    并确保它是第一条规则,然后在其正下方添加:

    RewriteRule ^([a-zA-Z0-9_-]+)/?$ user.php?id=$1 [L]
    

    你也不想重写基址/,你可以删除那行或者改成/user/

    【讨论】:

    • 我已经用你的解决方案更新了我的问题..它给出了 500 个状态..请帮助..对不起,我对 .htaccess 真的很不好
    猜你喜欢
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 2015-09-27
    相关资源
    最近更新 更多