.htaccess重写规则目录
如果说一个id=“abc123”,我就可以很好地访问www.site.com/abc123 但我希望能够访问.htaccess重写规则目录,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,如果说一个id=“abc123”,我就可以很好地访问www.site.com/abc123 但我希望能够访问www.site.com/view/abc123 所以我试着: RewriteRule ^(.*)/?$ ./view.php?id=$1 但是没有用。当我试图访问www.site.com/view/abc123时,它似乎甚至没有抓取$\u GET请求来获取id。 怎么了 我的整个.htaccess: RewriteRule ^view/(.*)/?$ ./view.php?id=$1
www.site.com/view/abc123
所以我试着:
RewriteRule ^(.*)/?$ ./view.php?id=$1
但是没有用。当我试图访问www.site.com/view/abc123
时,它似乎甚至没有抓取$\u GET
请求来获取id。
怎么了
我的整个.htaccess:
RewriteRule ^view/(.*)/?$ ./view.php?id=$1
编辑:
使用上述.htaccess,当我访问时:
http://localhost/~user/sitetest/view/abc123
它不会从view.php加载$\u GET[]。我甚至尝试回显$u GET[],但结果显示为空白
如果我将其编辑为RewriteRule^(+?)/?$view.php?id=$1
和访问http://localhost/~user/sitetest/abc123
它工作正常
如果我将其编辑为RewriteRule^view-(.+?)/?$view.php?id=$1
和访问http://localhost/~user/sitetest/view-abc123
工作正常
它是否与斜杠有关???我认为您缺少正则表达式开头的
/
:
RewriteEngine On
RewriteBase /~user/sitetest/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^view/(.+?)/?$ view.php?id=$1
试着这样做:
RewriteRule ^/view/(.*)$ /view.php?id=$1
使用RewriteBase,您特别告诉服务器在服务器的根目录中使用view.php。如果不指定RewriteBase,服务器将使用请求目录(being/view/)中的view.php 希望这有帮助:)通过将RewriteBase设置为/并使用/~user/…修复了它。。。按照我的规则 (Tom Knapen的信条,因为代码示例而张贴在这里) 因此,OP的.htaccess将变成:
# this next line is really important
RewriteBase /
RewriteRule ^view/(.+?)/?$ view.php?id=$1
重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-F
重写规则^view/(.+?)/?$/~user/sitetest/view.php?id=$1
ErrorDocument 404/home/user/public_html/sitetest/view.php
#或许:
#ErrorDocument 404/home/user/httpdocs/sitetest/view.php
仍然不起作用。我有/?在那里,理想情况下,它可以处理带有尾随斜杠的URL。不确定问题出在哪里,因此尝试不同的方法加上。*会吃掉尾随斜杠。这也不起作用:(如果这有什么不同的话,我会在localhost上做这件事?@Aaron你能发布你的.htaccess文件的其余部分吗?也许还有别的东西把事情搞砸了:)编辑了我的主要帖子。希望这是一个简单的修复方法!我在帖子中没有看到任何错误。htaccess,唯一认为可能错误的是RewriteBase。请确保您指定的路径是相对于站点文档根目录的htdocs目录的。因此,请尝试将其更改为RewriteBase/
一秒钟,看看它是否有效。我尝试了d它不起作用:(我再次编辑了我的主要帖子,对我看到的内容进行了更深入的解释。查看我在自己帖子上的评论,无法编辑它,请通知你
<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>