我需要将所有404路由到parent td
,除非在URL的开头有<style>
table tr {
border-bottom: 1px dotted #E8E8E8;
}
table tr td {
padding-top: 6px;
padding-bottom: 6px;
}
.image{
margin:0;
padding:0;
}
.rowspan {
position: relative;
}
.image-input{
margin:0;
padding:0;
position: absolute;
top: 6px;
}
</style>
<table>
<tbody>
<tr>
<td>Category</td>
<td><input type="text" id="CId"></td>
<td>Contries </td>
<td><input type="text" id="Contries"></td>
</tr>
<tr>
<td>Name</td>
<td><input type="text"></td>
<td class="image">image</td>
<td rowspan="2" class="rowspan"><input class="image-input" type="text">
<img src="/" />
</td>
</tr>
<tr>
<td>Branch</td>
<td><input type="text" id="Brand"></td>
<td></td>
<td style="display: none;"></td>
</tr>
<tr>
<td>Product</td>
<td><input type="text"></td>
<td></td>
<td style="display: none;"></td>
</tr>
</tbody>
</table>
,然后我需要将其路由到/index.php
。
换句话说,我有四个URL:
/blog/
我需要将这些文件路由到我的主网站/blog/index.php
文件或我的博客example.com/
example.com/my-page/
example.com/blog/
example.com/blog/my-post/
文件。
我知道我可以使用PHP来实现这一点,但这对于Nginx来说是一个更适合的任务。
我设法使用以下方法实现了所需的行为:
index.php
但是我想在没有index.php
指令的帮助下实现这一目标
我没有运气就试过以下事情:
location / {
try_files $uri $uri/;
}
if (!-e $request_filename)
{
# Wordpress Blog
rewrite ^/blog($|/.*) /blog/index.php break;
# Main Site
rewrite ^ /index.php?_url=$uri&$args break;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index /index.php;
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
以上正确地为4个中的3个提供了正确但不是rewrite
,这产生了Nginx 404页面。
我尝试了location /blog/ {
try_files $uri $uri/ /blog/index.php;
}
location / {
try_files $uri $uri/ /index.php?_url=$uri&$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index /index.php;
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
和/blog/my-post/
之类的内容。前者没有产生差异,而后者产生了一个丑陋的网关错误。我宁愿避免使用location ~ /blog/
解决方案,因此我没有以冗余方式嵌套配置。在这种情况下,我很快就会坚持我的location ^~ /blog/
解决方案。
我的逻辑出了什么问题?