仅当使用 mod_rewrite 找到文件时才替换 URL

发布于 2024-12-15 06:59:27 字数 1002 浏览 0 评论 0原文

我是这样做的:

  1. 用户输入一个 URL,
  2. mod_rewrite 处理以下形式的 URL:^([^/\.]+)/?$ (第一个 路径中的段)
  3. 并将它们重定向到索引页面: struct.php?page=$1
  4. 在索引页面(struct.php)中我请求页面的内容 ($_GET['page']) 如果存在:

    $content = @file_get_contents("pages/$_GET[page]/.content")

  5. 如果内容不存在,我只是请求页面内容 'not_found/.content'

这是可行的,但我想在脚本中保持简单,并使用 mod_rewrite 的功能仅请求存在的页面。

我想要这样做:

  1. 用户输入一个 URL,
  2. mod_rewrite 处理以下形式的 URL:^([^/\.]+)/?$ (第一个 路径中的段),
  3. 仅在找到 .content 文件时将它们重定向到索引页struct.php?page=$1

这是我的尝试:

;
  重写引擎开启

  RewriteCond 页/$1/.content -f
  RewriteRule ^([^/\.]+)/?$ struct.php?page=$1 [L]

注意:我正在使用 .htaccess 文件

here's how I do :

  1. the user types a URL
  2. the mod_rewrite handles URLs of the form : ^([^/\.]+)/?$ (the first
    segment in the path)
  3. and redirect them to the index page : struct.php?page=$1
  4. 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")

  5. 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 :

  1. the user types a URL
  2. the mod_rewrite handles URLs of the form : ^([^/\.]+)/?$ (the first
    segment in the path)
  3. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不必你懂 2024-12-22 06:59:27

这是我的解决方案:

RewriteEngine On

RewriteCond %{REQUEST_URI} ^([^/\.]+)/?
RewriteCond %{DOCUMENT_ROOT}/%1/.content -f
RewriteRule ^([^/\.]+)/? struct.php?page=$1 [PT,QSA,L]

Here's my solution:

RewriteEngine On

RewriteCond %{REQUEST_URI} ^([^/\.]+)/?
RewriteCond %{DOCUMENT_ROOT}/%1/.content -f
RewriteRule ^([^/\.]+)/? struct.php?page=$1 [PT,QSA,L]
メ斷腸人バ 2024-12-22 06:59:27

您尝试过以下方法吗?

RewriteEngine on

RewriteCond %{QUERY_STRING} ^([^/\.]+)/?
RewriteCond /absolute/path/pages/$1/.content -f
RewriteRule ^.*$ struct.php?page=$1 [PT,QSA,L]

我还没有测试过这个,所以我不确定它是否有效,但你应该尝试一下。

请记住将 /absolute/path/ 更改为页面文件夹的绝对路径。

Have you tried the following?

RewriteEngine on

RewriteCond %{QUERY_STRING} ^([^/\.]+)/?
RewriteCond /absolute/path/pages/$1/.content -f
RewriteRule ^.*$ struct.php?page=$1 [PT,QSA,L]

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文