我正在尝试让FuelPHP在我的服务器上运行。我没有权限使用.htaccess文件用于RewriteRule。但是,我的主机允许我指定httpd.conf文件的一部分。
以下适用于我想要的内容:
<Directory /Applications/XAMPP/xamppfiles/htdocs/sandbox/username/public>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</Directory>
然而,我需要它不仅仅是“用户名”。 如何在此目录中使用通配符,以便它适用于一次性解决方案的“用户名”的任何值?
我在apache manual上找到了这个建议,但我不确定如何使用RewriteRule
。
尝试了以下但是没有用:
<Directory /Applications/XAMPP/xamppfiles/htdocs/sandbox/*/public>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</Directory>
请帮忙!
答案 0 :(得分:6)
你接近apache手册:
<Directory /Applications/XAMPP/xamppfiles/htdocs/sandbox/*/public>
到
<Directory ~ "/Applications/XAMPP/xamppfiles/htdocs/sandbox/.*/public">
答案 1 :(得分:1)
我们发现此消息解决了我们遇到的问题,并未提供真正的解决方案:How to use apache2 mod_rewrite within a Directory directive that uses wildcards?
我们最终使用了以下解决方案:
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(/sandbox/([^/]*)/public/.*)$ /sandbox/$2/public/index.php?$1 [PT,QSA]
必须添加“PT”,因为它通常隐含在目录块中,并告诉它将目标路径视为URI而不是文件路径(由于它没有得到满本地路径)。 QSA标志只是确保您的index.php获得最初提交的所有信息。