我有一个这样的网络目录结构:
root
/content
/plugins
/myplugin
/Slim (folder containing Slim Framework)
index.php
/other_folder_1
/other_folder_2
.htaccess
index.html
我对在我的.htaccess
文件中指定的内容感兴趣,以便引用服务器上实际不存在的目录,但实际上指向/myplugin
目录中的 Slim 应用程序。
以下是一些示例 URL,我希望用户(或我自己)能够在浏览器的地址栏中使用它们,或者在文档中链接:
1. http://example.com/nonexistent_dir 2. http://example.com/nonexistent_dir/info 3. http://example.com/nonexistent_dir/info/details
我正在尝试将这些 URL 重写为以下内容:
1. http://example.com/content/plugins/myplugin/index.php 2. http://example.com/content/plugins/myplugin/index.php/info 3. http://example.com/content/plugins/myplugin/index.php/info/details
...实际上所有这些都将由目录index.php
中的 Slim Framework 应用程序处理/myplugin
。重要的是,明显的 URL 保持在第一个示例中的样子,而不会在地址栏中进行更改。
这是.htaccess
根目录中文件当前的内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/schedule [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ /content/plugins/myplugin/index.php [QSA,NC,L]
</IfModule>
这会将所有 3 个测试示例重定向到http://example.com/nonexistent_dir
,使用/
路由。所以我的想法是我应该捕获 之后的所有内容nonexistent_dir
,无论它是什么或什么都没有,并以某种方式将其附加到 RewriteRule 的末尾。但我不明白怎么做。
我意识到在表达式周围使用括号将使我能够将内容用作变量,用$1
(或$2
,$3
...表示倍数)引用它,但我不知道如何将其应用于此解决方案。
任何帮助将不胜感激。