.htaccess重写规则目录

.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

如果说一个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
编辑:

使用上述.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>