我试图找出如何添加" /"到每个网址的末尾。 这个网址需要没有扩展。 例如:
example.com/about.php; example.com/about.html => example.com/about/
我在配置nginx重写规则中是假的。 这是我的配置:
server{
root /usr/share/nginx/www/example.com;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name example.com www.example.com;
client_max_body_size 20M;
# BEGIN W3TC Browser Cache
gzip on;
gzip_types text/css text/x-component application/x-javascript application/json application/javascript text/javascript text/x-js text/richtext image/svg+xml text/plain text$;
# END W3TC Browser Cache
location /blog {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
# try_files $uri $uri/ /index.php;
try_files $uri $uri/ /blog/index.php?q=$uri&$args;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
location ~* ^.+\.(rss|atom|jpg|jpeg|gif|png|ico|rtf|js|css|json)$ {
expires max;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location / {
try_files $uri $uri.html $uri/ @extensionless-php;
index index.php index.html index.htm;
}
location @extensionless-php {
rewrite ^(.*)$ $1.php last;
}
}
我找到了一些解决方案,但我无法将它组合起来,因为我在nginx中使用了noob。
答案 0 :(得分:1)
您需要更改部分配置
location / {
rewrite ^(/.*[^/])\.(html|php)$ $1/ permanent;
rewrite ^(/.*[^/])(?!/)$ $1/ permanent;
try_files $uri $uri.html $uri/ @extensionless-php;
index index.php;
}
location @extensionless-php {
rewrite ^(.*)/$ $1.php last;
}
第一行rewrite ^(/.*[^/])\.(html|php)$ $1/ permanent;
将重定向所有扩展名为.html或.php
rewrite ^(/.*[^/])(?!/)$ $1/ permanent;
将添加/到请求,其结尾没有/