仅当使用 mod_rewrite 找到文件时才替换 URL
我是这样做的:
- 用户输入一个 URL,
- mod_rewrite 处理以下形式的 URL:
^([^/\.]+)/?$
(第一个 路径中的段) - 并将它们重定向到索引页面:
struct.php?page=$1
在索引页面(struct.php)中我请求页面的内容 ($_GET['page']) 如果存在:
$content = @file_get_contents("pages/$_GET[page]/.content")
- 如果内容不存在,我只是请求页面内容
'not_found/.content'
这是可行的,但我想在脚本中保持简单,并使用 mod_rewrite 的功能仅请求存在的页面。
我想要这样做:
- 用户输入一个 URL,
- mod_rewrite 处理以下形式的 URL:
^([^/\.]+)/?$
(第一个 路径中的段), - 并仅在找到
.content
文件时将它们重定向到索引页:struct.php?page=$1
这是我的尝试:
; 重写引擎开启 RewriteCond 页/$1/.content -f RewriteRule ^([^/\.]+)/?$ struct.php?page=$1 [L]
注意:我正在使用 .htaccess
文件
here's how I do :
- the user types a URL
- the mod_rewrite handles URLs of the form :
^([^/\.]+)/?$
(the first
segment in the path) - and redirect them to the index page :
struct.php?page=$1
in the index page (struct.php) I request the content of the page
($_GET['page']) if it exists :$content = @file_get_contents("pages/$_GET[page]/.content")
- if the content doesn't exist, I just request the content of the page
'not_found/.content'
This is working but I'd like to keep things simple in the script and use the power of mod_rewrite to request only the pages that exist.
here's how I'd like to do :
- the user types a URL
- the mod_rewrite handles URLs of the form :
^([^/\.]+)/?$
(the first
segment in the path) - and redirect them to the index page only if the
.content
file has been found :struct.php?page=$1
here's my try:
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond pages/$1/.content -f RewriteRule ^([^/\.]+)/?$ struct.php?page=$1 [L] </IfModule>
note : I'm using an .htaccess
file
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是我的解决方案:
Here's my solution:
您尝试过以下方法吗?
我还没有测试过这个,所以我不确定它是否有效,但你应该尝试一下。
请记住将 /absolute/path/ 更改为页面文件夹的绝对路径。
Have you tried the following?
I haven't tested this so I'm not sure if it works, but you should give it a try.
Remember changing /absolute/path/ to the absolute path of the pages folder.