我的网站的网址与PHP文件相对应:
www.mysite.com/cat.php?id=stuff
这些PHP文件不再存在,如何对新网址进行301重定向(出于搜索引擎优化的原因):
www.mysite.com/stuff
我试过
rewrite ^/cat\.php\?id=stuff http://www.mysite.com/stuff? permanent;
但它不起作用,我得到“未指定输入文件”。
感谢您的帮助!
编辑:
有关我的配置的更多信息(网站由Wordpress提供支持):
index index.php;
root /var/www/mydirectory;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
答案 0 :(得分:1)
问题是你已经在重写目录的末尾添加了?
,因此nginx告诉PHP提供不存在的http://yourdomain.com/stuff?/index.php
。
假设mysites.com
是一个拼写错误并且您要重定向到同一个域,请尝试以下操作:
rewrite ^/cat\.php\?id=(.*)$ /$1/ permanent;
使用rewrite
和try_files
时存在很多问题,我有一个使用这些的工作配置,如:
我认为规则是rewrite
规则必须在try_files
之前,所以试试这个:
index index.php;
root /var/www/mydirectory;
location = / {
rewrite ^/cat\.php\?id=(.*)$ /$1/ permanent;
}
location ^(.*)$ {
try_files $uri $uri/ /index.php?$1;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}