更新
我无法将此规则添加到.htaccess文件中,最后我使用了Wordpress Rewrite类并添加了一个add_rewrite_rule()来完成重写,这非常有效。
原帖
我一直试图将.htaccess
规则放在一起,将部分路径移动到查询字符串。根据{{3}}。
我的网站空间的根目录中有两个文件夹,一个用于www.mydomain.com
,另一个用于test.mydomain.com
。我的.htaccess
文件位于test.mydomain.com
文件夹中,我想将test.mydomain.com/images/parm1/parm2
重写为test.mydomain.com/images/?gwpw=parm2&gwpi=parm1
。
如果我在.htaccess
文件中放入垃圾,我会收到500内部服务器错误,因此我知道正在读取该文件。我在Wordpress的.htaccess
中也有一些使用mod_rewrite()
的现有规则,如果我注释掉,如果您尝试访问test.mydomain.com/somegarbage
,请停止网站重定向到404错误页面。所以我知道mod_rewrite()
已启用。
我已经读过我需要设置Options +FollowSymLinks -MultiViews
,所以我的整个规则是:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^/images/([^/]*)/([^/]*) /images/?gwpw=$1&gwpi=$2 [PT]
我在文件的不同部分尝试了这个,删除了/images/?gwpw=...
的前导斜杠。我已经尝试添加一条规则,我认为应该将每个请求重写为不同的页面,例如RewriteRule ^/* /somewhere
,但我似乎无法重写任何工作。
由于这是共享服务器,我无法访问httpd.conf
。
我的整个.htaccess文件目前看起来像这样:
<IfModule php5_module>
php_flag session.cookie_httponly on
</IfModule>
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^/images/([^/]*)/([^/]*) /images/?gwpw=$1&gwpi=$2 [PT]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# Wordfence WAF
<Files ".user.ini">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
</Files>
对于.htaccess规则,我是一个完整的新手,所以任何帮助都将非常感激。我显然做错了什么但我再也看不到树木了!