.htaccess重写不存在的文件

时间:2013-02-04 16:11:56

标签: apache .htaccess

我在网上看到了一些例子,这里有一些关于stackoverflow的答案。我还没有发现任何适合我需求的东西。首先让我说我对.htaccess的经验很少,我正在通过在线阅读教程和示例对它进行更多的研究。

希望有人可以解释我在这里做错了什么......我不希望文件发送重定向标头,而是用另一个URL掩盖它们不存在的URL。

示例:

我转到不存在的页面(例如404):

http://example.com/hello-everyone

我宁愿显示来自

的内容,而不是显示404
http://example.com/?/hello-everyone

注意*我不想要重定向标题,因为我不希望人们必须看到?/前缀。

谢谢!

1 个答案:

答案 0 :(得分:3)

你可以试试这个:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  /([^/]+)/?$  [NC]
RewriteRule .*   index.php?key=%1  [L]

无声地映射

http://www.mywebsite.com/val

http://www.mywebsite.com/index.php?key=val

其中key是任何固定的密钥名称,而“val”是传入URL中的变量值。

/val必须是传入URL中的最后一个字符串才能使规则生效。

对于永久性和可见的重定向,请将[L]替换为[R=301,L]

使用此类型的传入网址http://www.mywebsite.com/val可能会让您以后停止使用此时使用的更难记住的网址http://www.mywebsite.com/?/val