【问题标题】:URL Rewrite in htaccess not workinghtaccess中的URL重写不起作用
【发布时间】:2014-11-20 17:27:45
【问题描述】:

我有一个 url www.example.com/mybooks/list.php?id=novel-15 现在我想将此 url 重写为 www.example.com/mybooks/novel-15 为此我在 .htaccess 文件中有以下代码

<Files ~ "\.log$">
    Order allow,deny
    Deny from all
</Files>

RewriteEngine on
RewriteRule ^mybooks/([A-Za-z0-9-]+)/?$ mybooks/list.php?id=?id=$1 [NC,L]

但这不起作用。谁给我一个好的解决方案...

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    在您的 /mybooks/.htaccess 中尝试此规则:

    RewriteEngine on
    RewriteBase /mybooks/ 
    
    RewriteCond %{THE_REQUEST} /list\.php\?id=([^\s&]+) [NC]
    RewriteRule ^ %1? [R=302,L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([A-Za-z0-9-]+)/?$ list.php?id=$1 [L,QSA]
    

    【讨论】:

    • 我的 .htaccess 文件在 mybooks 文件夹中,我尝试了 mybooks/list.php?id=novel-15 url 它不会重写为 mybooks/novel-15
    • thax thalaivaa.... 它工作得很好。你能解释一下吗bcoz...我也想做更多的事情...我想将 mybooks/index.php?search_word=book&search_option=all 重写为 mybooks/book
    • 第一个重定向规则使用THE_REQUESTTHE_REQUEST 变量代表 Apache 从您的浏览器收到的原始请求,并且在执行某些重写规则后它不会被覆盖。此变量的示例值为GET /index.php?id=123 HTTP/1.1。您可以在 askapache.com 上看到非常好的示例和教程
    • 我想将 mybooks/index.php?search_word=book&search_option=all 重写为 mybooks/book
    • 请不要从 cmets 开始新问题。这也不可行,因为它可以是list.phpindex.php,但不能同时是两者。
    猜你喜欢
    • 2015-02-03
    • 2014-08-08
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多