RewriteRule ^(.*)/?$ ./view.php?id=$1如果假设一个id = "abc123",我就可以很好地访问www.site.com/abc123。
但我希望能够通过www.site.com/view/abc123访问
所以我试着:
RewriteRule ^view/(.*)/?$ ./view.php?id=$1但无济于事。当我尝试访问www.site.com/view/abc123时,它似乎甚至没有获取获取id的$_GET请求。怎么了?
我的整个.htaccess:
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,它工作得很好。
是不是跟斜杠有关?
发布于 2011-12-26 21:44:14
尝试如下所示:
# this next line is really important
RewriteBase /
RewriteRule ^view/(.+?)/?$ view.php?id=$1通过使用RewriteBase,您可以明确地告诉服务器在服务器的根目录中使用view.php。如果不指定视图,服务器将使用所请求目录(为/ RewriteBase /)中的view.php。
希望这能有所帮助:)
发布于 2011-12-26 21:34:39
我认为您在正则表达式的开头缺少/:
RewriteRule ^/view/(.*)$ /view.php?id=$1发布于 2013-02-13 23:29:54
通过将RewriteBase设置为/并使用/~user/...在我的RewriteRule中(creds to Tom Knapen,因为代码示例而在这里发布)。
因此,OP的.htaccess将变成:
<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>https://stackoverflow.com/questions/8636219
复制相似问题