首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.htaccess RewriteRule目录

问.htaccess RewriteRule目录
EN

Stack Overflow用户
提问于 2011-12-26 21:30:41
回答 3查看 2.4K关注 0票数 0
代码语言:javascript
复制
RewriteRule ^(.*)/?$ ./view.php?id=$1

如果假设一个id = "abc123",我就可以很好地访问www.site.com/abc123。

但我希望能够通过www.site.com/view/abc123访问

所以我试着:

代码语言:javascript
复制
RewriteRule ^view/(.*)/?$ ./view.php?id=$1

但无济于事。当我尝试访问www.site.com/view/abc123时,它似乎甚至没有获取获取id的$_GET请求。怎么了?

我的整个.htaccess:

代码语言:javascript
复制
RewriteEngine On
RewriteBase /~user/sitetest/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^view/(.+?)/?$ view.php?id=$1

编辑:

当我访问http://localhost/~user/sitetest/view/abc123时,使用上面的.htaccess

它不会从view.php加载$_GET[]。我甚至尝试回显$_GET[],但它显示为空白。

如果我将它编辑为RewriteRule ^(.+?)/?$ view.php?id=$1并访问http://localhost/~user/sitetest/abc123,它工作得很好。

如果我将它编辑为RewriteRule ^view-(.+?)/?$ view.php?id=$1并访问http://localhost/~user/sitetest/view-abc123,它工作得很好。

是不是跟斜杠有关?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-26 21:44:14

尝试如下所示:

代码语言:javascript
复制
# this next line is really important
RewriteBase /

RewriteRule ^view/(.+?)/?$ view.php?id=$1

通过使用RewriteBase,您可以明确地告诉服务器在服务器的根目录中使用view.php。如果不指定视图,服务器将使用所请求目录(为/ RewriteBase /)中的view.php。

希望这能有所帮助:)

​

票数 1
EN

Stack Overflow用户

发布于 2011-12-26 21:34:39

我认为您在正则表达式的开头缺少/:

代码语言:javascript
复制
RewriteRule ^/view/(.*)$ /view.php?id=$1
票数 0
EN

Stack Overflow用户

发布于 2013-02-13 23:29:54

通过将RewriteBase设置为/并使用/~user/...在我的RewriteRule中(creds to Tom Knapen,因为代码示例而在这里发布)。

因此,OP的.htaccess将变成:

代码语言:javascript
复制
<IfModule rewrite_module>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^view/(.+?)/?$ /~user/sitetest/view.php?id=$1
</IfModule>
<IfModule !rewrite_module>
    ErrorDocument 404 /home/user/public_html/sitetest/view.php
    #OR perhaps:
    #ErrorDocument 404 /home/user/httpdocs/sitetest/view.php
</IfModule>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8636219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档