【问题标题】:.htaccess ReWriteRule - Requested URL <rewritten filename> was not found on this server.htaccess ReWriteRule - 在此服务器上未找到请求的 URL <重写文件名>
【发布时间】:2016-01-16 23:41:22
【问题描述】:

我一直在 WAMP 中对此进行测试,但无法使其正常工作。我相信由于收到错误消息,WAMP 已正确设置,并且当我不使用 .htaccess 文件时它可以正常工作。

我有一个用于测试的文件名Feedback.php。而不是显示为 www.mysite.com/Feedback.php。我试图让它成为 www.mysite.com/Feedback

.htaccess 文件

RewriteEngine on
RewriteRule ^Feedback.php/?$ Feedback [NC]

我收到的错误信息是

“未找到
在此服务器上未找到请求的 URL /Feedback。”

reWriteRule 工作需要两个文件吗?

我也试图让我的 index.php 成为 www.mysite.com,这可能是一个不同的怪物。

我的导航栏链接应该是什么?现在他们是&lt;a href="Feedback.php"&gt;Feedback&lt;/a&gt; href 应该是href="Feedback" 一旦我得到这个工作?


编辑:我把 ReWriteRule 变量倒过来了。而不是

RewriteRule ^Feedback.php/?$ Feedback [NC]

我应该有

RewriteRule ^Feedback/$ /Feedback.php [NC,L]

重写看起来并没有发生,因为它仍然读取 localhost/Feedback.php

【问题讨论】:

  • 你在做相反的事情。你的规则应该是RewriteRule ^Feedback$ /Feedback.php [NC,L]。这总是像RewriteRule WHAT WHERE
  • 谢谢!没有意识到这一点。我的 URL 仍然显示为 localhost/Feedback.php,因此虽然它已加载,但重命名似乎不起作用。

标签: php apache .htaccess mod-rewrite


【解决方案1】:

您可以使用它从您的页面中删除 .php 扩展名,并在您的网站中省略 index 部分:

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{THE_REQUEST} /index
RewriteRule ^index$ http://yourwebsite.com/         [R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php                            [L]

【讨论】:

  • @john stamos 我一直在我的回答中使用代码 sn-p,它总是对我有用
  • 谢谢你。我认为问题在于我的 href 链接是 而不是 。我们要引用新名称正确吗?
  • 当然!!您需要从链接中排除 .php www.examplesite.com/examplepage
  • **********!我是新手。感谢您的澄清。
  • 不客气,我们都是新手,学习新东西,我很高兴它有帮助
猜你喜欢
  • 2014-04-17
  • 2014-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-28
  • 2019-03-01
  • 2017-09-09
  • 2016-12-29
相关资源
最近更新 更多