首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >URL重写不重写页面

URL重写不重写页面
EN

Stack Overflow用户
提问于 2015-01-21 12:54:47
回答 2查看 173关注 0票数 1

我尝试使用URL重写模块,但由于某些原因,它不会重写URL。如果我去这个网站:http://localhost/projectredrum/foto.php,它将显示正确的网页,但它不会重写我想要的网址。

代码语言:javascript
运行
复制
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
RewriteBase /projectredrum/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^foto\.php$ /Aquaria-Foto/Fotos
</IfModule>
  1. 重写模块教程

在看了上面提到的教程之后,我想我应该尝试一下

代码语言:javascript
运行
复制
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

因为如果使用它,只有当URL与文件名或目录不匹配时,它才会重写URL。

然而,当我这样做时,我遇到了一个404 page not found问题。

有人知道为什么URL重写不起作用吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-21 13:05:08

由于这种情况,它不起作用:

代码语言:javascript
运行
复制
RewriteCond %{REQUEST_FILENAME} !-f

因为http://localhost/projectredrum/foto.php是一个有效的文件。

要修复该规则,可以在/projectredrum/.htaccess中使用此规则

代码语言:javascript
运行
复制
Options +FollowSymlinks
RewriteEngine on
RewriteBase /projectredrum/

RewriteCond %{THE_REQUEST} /foto\.php[?\s] [NC]
RewriteRule ^ /Aquaria-Foto/Fotos [L,NC,R=302]

R=302用于实际重定向浏览器中的URL。

DocumentRoot/.htaccess中,您可以使用:

代码语言:javascript
运行
复制
RewriteEngine On

RewriteRule ^Aquaria-Foto/Fotos/?$ /projectredrum/foto.php [L,NC]

参考文献:

  • 重写攻略
  • 重写技术细节
  • 重写深度细节
票数 1
EN

Stack Overflow用户

发布于 2015-01-21 13:10:30

Apache进行本地重写,因为页面位于同一台服务器上,它可以在相同的请求上加载它。将[R,L]添加到RewriteRule行的末尾,将浏览器重新配置到想要的地址。

R指的是暂时的重定向,

我是说最后一条规则。

R=301是永久的重定向

例如,[R=301,L]会永久重定向,并停止检查其他规则。

在您的例子中,您可能希望使用这样的行:

RewriteRule ^foto\.php$ /Aquaria-Foto/Fotos [R,L]

下面是有关标志的更多信息:http://httpd.apache.org/docs/2.4/rewrite/flags.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28067768

复制
相关文章

相似问题

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