php htaccess将参数附加到错误页

pobjuy32  于 2023-09-29  发布在  PHP
关注(0)|答案(3)|浏览(99)

我有一个小的翻译系统,工作正常。当用户点击语言时,网站重定向到/en或/pt。我也有一些自定义规则对我的htaccess文件。

Options -Indexes

RewriteEngine On
RewriteBase /
RewriteRule     ^send-email$        send-msg-ajax.php [NC]
RewriteRule     ^cv$                docs/cv.pdf [NC]
RewriteRule     ^([a-zA-z_-]+)$     index.php?lng=$1 [QSA,L]

#custom error pages
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php

一切正常,但403错误将参数lng附加到url。

example.local/imgs/?lng=imgs

我怎么能做这个没有?=imgs?
先谢谢你!

更新

当我写像

example.local/imgs

htaccess追加参数,但当我这样写

example.local/imgs/

显示错误页,但不显示附加参数

6ju8rftf

6ju8rftf1#

正确的代码在这里

Options -Indexes
RewriteEngine On
RewriteBase /

# Exclude certain directories from RewriteRule
RewriteCond %{REQUEST_URI} !^/imgs
# Exclude error pages
RewriteCond %{REQUEST_URI} !^/error\.php
# Custom rules
RewriteRule     ^send-email$        send-msg-ajax.php [NC]
RewriteRule     ^cv$                docs/cv.pdf [NC]

# Language rewrite
RewriteRule     ^([a-zA-z_-]+)$     index.php?lng=$1 [QSA,L]

# Custom error pages
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
slhcrj9b

slhcrj9b2#

请检查此规则

Options -Indexes
RewriteEngine On
RewriteBase /

# Add a RewriteCond to exclude the "lng" parameter for error documents
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-z_-]+)$ index.php?lng=$1 [QSA,L]

RewriteRule ^send-email$ send-msg-ajax.php [NC]
RewriteRule ^cv$ docs/cv.pdf [NC]

# Custom error pages
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php

我添加了一个RewriteCond条件来检查请求的文件是否不存在
(使用%{REQUEST_FILENAME}!-f)。此条件确保“lng”参数不会附加到错误文档的URL中,例如403错误页面。

0wi1tuuw

0wi1tuuw3#

就像这样:

#custom error pages
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php

Options -Indexes
RewriteEngine On
RewriteBase /

RewriteRule     ^send-email$        send-msg-ajax.php [NC,L]
RewriteRule     ^cv$                docs/cv.pdf [NC,L]

# except for real files and directories rewrite all requests
# to index.php with lng as query parameter containing URI
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule     ^([a-zA-z_-]+)$     index.php?lng=$1 [QSA,L]

相关问题