Apache 重定向 url
Apache redirect url
重建我的网站后,一些 URLs(其中的内容不再存在)必须重定向到 /index.php。在旧版本中,我在 /hu/fulbeloves+fulbevaloval/ 目录中有一个 index.php,该目录现在不存在。我想按如下方式重定向请求:
- /hu/fulbeloves+fulbevaloval/ => /index.php?q=hu/fulbeloves-fulbevaloval/
- /hu/fulbeloves+fulbevaloval/index.php?placeid=1234 => /index.php?q=hu/fulbeloves-fulbevaloval/index.php?placeid =1234
第一种情况正常,但如果 index.php 在 URL 中,则它会失败并显示 404(未找到)
我的 .htaccess 文件:
RewriteEngine on
RewriteRule ^(.*)\+(.*)$ /- [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?q= [L,QSA]
谢谢指教!
根据您显示的 samples/attempts,请尝试以下。确保您的 htaccess 规则文件和 index.php 文件存在于根目录中。同样在你的第二个显示重写的 url /index.php?q=hu/fulbeloves-fulbevaloval/index.php?placeid=1234
中,情况并非如此,所以我用这里的第一条规则将它重写为 /index.php?q=hu/fulbeloves-fulbevaloval&placeid=1234
。
请确保在测试您的 URL 之前清除您的浏览器缓存。
RewriteEngine ON
RewriteCond %{THE_REQUEST} \s/([^+]*)\+([^/]*)/index.\.php\?(\S+)\s [NC]
RewriteRule ^ /index.php?q=%1-%2/index.php&%3 [R=301,L]
RewriteRule ^(.*)\+(.*)$ /- [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?q= [L,QSA]
index.php(以及所有 .php 请求)的 404 响应是由于 VirtualHost 设置所致:
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php/php7.0-fpm.sock|fcgi://localhost/srv/
改成ProxyPassMatch ^/(index\.php(/.*)?)$ unix:/run/php/php7.0-fpm.sock|fcgi://localhost/srv/
后解决
重建我的网站后,一些 URLs(其中的内容不再存在)必须重定向到 /index.php。在旧版本中,我在 /hu/fulbeloves+fulbevaloval/ 目录中有一个 index.php,该目录现在不存在。我想按如下方式重定向请求:
- /hu/fulbeloves+fulbevaloval/ => /index.php?q=hu/fulbeloves-fulbevaloval/
- /hu/fulbeloves+fulbevaloval/index.php?placeid=1234 => /index.php?q=hu/fulbeloves-fulbevaloval/index.php?placeid =1234
第一种情况正常,但如果 index.php 在 URL 中,则它会失败并显示 404(未找到)
我的 .htaccess 文件:
RewriteEngine on
RewriteRule ^(.*)\+(.*)$ /- [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?q= [L,QSA]
谢谢指教!
根据您显示的 samples/attempts,请尝试以下。确保您的 htaccess 规则文件和 index.php 文件存在于根目录中。同样在你的第二个显示重写的 url /index.php?q=hu/fulbeloves-fulbevaloval/index.php?placeid=1234
中,情况并非如此,所以我用这里的第一条规则将它重写为 /index.php?q=hu/fulbeloves-fulbevaloval&placeid=1234
。
请确保在测试您的 URL 之前清除您的浏览器缓存。
RewriteEngine ON
RewriteCond %{THE_REQUEST} \s/([^+]*)\+([^/]*)/index.\.php\?(\S+)\s [NC]
RewriteRule ^ /index.php?q=%1-%2/index.php&%3 [R=301,L]
RewriteRule ^(.*)\+(.*)$ /- [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?q= [L,QSA]
index.php(以及所有 .php 请求)的 404 响应是由于 VirtualHost 设置所致:
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php/php7.0-fpm.sock|fcgi://localhost/srv/
改成ProxyPassMatch ^/(index\.php(/.*)?)$ unix:/run/php/php7.0-fpm.sock|fcgi://localhost/srv/