【问题标题】:Wamp url rewrite issueWamp url重写问题
【发布时间】:2018-12-30 16:32:46
【问题描述】:

我的网址是

http://localhost/site.in/names-in.php?loc=kochi

我需要的网址是

http://localhost/site.in/names-in/kochi

我在.htaccess 有这个,不幸的是它不起作用。

Options +FollowSymLinks
RewriteEngine on
RewriteRule names-in/(.*)/ names-in.php?loc=$1  

我在页面print_r($_GET); 中有这个,它显示了空数组。任何输入为什么它不起作用?

【问题讨论】:

    标签: php apache .htaccess url-rewriting wamp


    【解决方案1】:

    试试这个

    Options +FollowSymLinks
    RewriteEngine On
    
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteCond %{SCRIPT_FILENAME} !-f
    
    RewriteRule ^names-in/(\d+)*$ ./names-in.php?loc=$1
    
    #RewriteRule ^names-in/(.*)$ ./names.php.php?loc=$1
    

    您可以通过http://localhost/site.in/names-in/kochi访问

    【讨论】:

    • 尝试打印print_r($_REQUEST)
    • 是site.in文件夹名称吗?
    • 是的,它在 localhost root 下
    • 我已经更新了代码,你可以用上面的代码再试一次
    • 还是空数组`Array()`
    【解决方案2】:

    您原来的 RewriteRule 没有得到满足。您可以改用{QUERY_STRING} 来实现这一点:

    RewirteEngine On
    RewriteCond %{QUERY_STRING} loc=(.+)$ [NC]
    RewriteRule ^(.*)$ /names-in/%1 [R=301,L,QSD]
    

    然后内部重写URL:

    RewriteRule ^/names-in/([^/]*) /names-in.php?loc=$1 [L]
    

    确保在测试此之前清除缓存。这是使用R=301,这是一个永久重定向,我建议您在测试时将其更改为R=302,因为这是临时的。

    我还在重写 URL 的末尾添加了?。这是为了阻止原始查询出现在 URL 的末尾。

    【讨论】:

    • 不幸的是它的投掷500 - Internal server error
    • 您的.htaccess 中还有其他内容吗?还是只有这条规则?
    • 没什么,就这个
    • 抱歉回复晚了。我进行了编辑,因为我忘记在重写规则中添加 [NE] 标志。立即尝试。
    • 感谢您的宝贵时间,不幸的是我仍然收到 500 错误
    猜你喜欢
    • 2012-06-20
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多