【问题标题】:.htaccess URL is working but page won't load.htaccess URL 工作,但页面不会加载
【发布时间】:2014-01-14 20:00:59
【问题描述】:

我正在尝试为我的网站 URL 创建一个 .htaccess 脚本,该脚本正在运行,但页面无法加载...Not Found The requested URL /Site/users/yax was not found on this server.

我想让<a href = 'http://localhost/Site/users/user.php?user=username'>View User</a> 出现 像这样:http://localhost/Site/users/name 点击但页面不会加载。

Apache 代码:

RewriteEngine  on
RewriteBase /Site/users/

RewriteCond %{THE_REQUEST} /users\.php\?user=([^\s&]+) [NC]
RewriteRule ^ %1? [R=302,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z_]+)$ users.php?user=$1 [L] 

提前谢谢你。

【问题讨论】:

  • 我相信users.php.htaccess 都存在于/Site/users/ 路径中?
  • No..htaccessSite 文件夹中。
  • 哦,这就是原因。在下面提供了答案。
  • @anubhava:解决了它。谢谢你让我开心。

标签: php regex apache .htaccess mod-rewrite


【解决方案1】:

试试这个代码:

Options +FollowSymLinks -MultiViews
RewriteEngine  on
RewriteBase /Site/

RewriteCond %{THE_REQUEST} /(users)/user\.php\?user=([^\s&]+) [NC]
RewriteRule ^ %1/%2? [R=302,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(users)/(\w+)/?$ $1/user.php?user=$2 [L,QSA] 

【讨论】:

  • 为什么users在第一个捕获组(users)
  • 因为 OP 的实际 URL 是:http://localhost/Site/users/user.php?user=username,而这个 .htaccess 位于 /Site/ 文件夹中,该文件夹具有 users 文件夹作为子文件夹。两个规则都应用了相同的概念。
【解决方案2】:

将您的规则更改为:

RewriteEngine  on
RewriteBase /Site/users/

RewriteCond %{THE_REQUEST} /users\.php\?user=([^\s&]+) [NC]
RewriteRule ^ %1? [R=302,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^users/([a-zA-Z_]+)$ users.php?user=$1 [L] 

如果 htaccess 文件位于 /Site/ 文件夹中,则“用户”将成为重写规则匹配的 URI 的一部分无论您将重写基础设置为什么 .

此外,您应该将链接更改为类似于http://localhost/Site/users/name,而不是每次都添加额外的往返重定向。

【讨论】:

    【解决方案3】:

    假设/Site/users/user.php 是一个真实文件,并且在其URI 中接受user=name

    您的 HTML:

    <a href="http://localhost/Site/users/name">View User</a>
    

    /.htaccess:

    RewriteEngine on
    RewriteRule  ^Site/users/(.*)$  /Site/users/user.php?user=$1 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多