是否可以将 url 中的空格更改为破折号 (-),而不在代码中进行更改?
URL 用于标识页面,因此不可能仅更改 url,因为将不再找到该页面,因此str_replace在此解决方案中不可用。
使用str_replace两次,一次将空格更改为破折号,并在页面加载器上将其更改回空格也不起作用,某些页面的页面名称中已经有破折号:)
我希望这可以通过 htaccess 实现,但我不知道如何实现。htacces 是否可以在浏览器中显示与实际 url 不同的 url?
例如:www.example.com/pages/hello%20world
应该是 visable aswww.example.com/pages/hello-world但GET变量仍然应该是hello%20world。
这是我当前的 .htaccess 文件
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/+home/httpd/vhosts/domain.nl/httpdocs/app/View/Products/([^%20]*)%20([^\s]*) [NC]
RewriteRule ^/home/httpd/vhosts/domain.nl/httpdocs/app/View/Products/%1-%2 [L,NE,R]
RewriteRule "^(/home/httpd/vhosts/domain.nl/httpdocs/app/View/Products/)/([^-]*)-+(.*)$" "/$1/$2 $3" [L,NE,NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
其中一项产品的示例 url = http://www.example.nl/software/category/details/this%20is%20a%20product-name
嗨,我已经在我的 IIS 上配置了一个重写规则,但它似乎永远不会被触发我已经为此工作了几个小时但没有任何运气这是我在应用程序的Web 配置中的规则:
<rewrite>
<rules>
<rule name="Rewrite frienly url to snapshot" stopProcessing="true">
<match url="/(localhost:2934)\/trabajos\/([\w-]+)\/([\w-|\-]+)" />
<action type="Rewrite" url="\/snapshots/{R:2}.html" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)
我的网址如下:
http://localhost:2934/trabajos/3ba2a9e4/some-cool-title '
我想重写为:
http://localhost:2934/snapshots/3ba2a9e4.html
这是我在 IIS 中测试模式得到的结果:

对我来说似乎没问题
但是在浏览器中测试 URL 时,我觉得规则永远不会被触发,事实上,我已经配置为跟踪失败的请求,就像本教程一样,我没有在日志文件夹中收到任何错误或文件。例如:C:\inetpub\logs\FailedReqLogFiles
我收到了一个 404 错误,它的记录如下:
2015-03-28 18:56:11 ::1 GET /trabajos/3ba2a9e4/some-cool-tile - 2934 - ::1 Mozilla/5.0+(Windows+NT+6.3;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/42.0.2311.60+Safari/537.36 - 404 0 2 4
2015-03-28 18:56:15 ::1 GET /trabajos/3ba2a9e4/some-cool-title - 2934 - ::1 Mozilla/5.0+(Windows+NT+6.3;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/42.0.2311.60+Safari/537.36 - 404 0 2 2
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我使用此代码将特定 url 重定向到我定制的 Wordpress 主题上的 php 文件:
add_action('wp', function() {
if ( trim(parse_url(add_query_arg(array()), PHP_URL_PATH), '/') === 'pagename' ) {
include(locate_template('mysciprt.php'));
exit();
}});
Run Code Online (Sandbox Code Playgroud)
(我知道我可以使用重写规则,但出于一些原因我需要使用此代码)。
它的工作很棒。问题是该页面仍然有一个 404 状态的 http 标头。这是一个问题,原因有几个(其中一些是:seo,不能使用发布脚本......)。
我的问题是:有什么办法可以解决吗?
我尝试过的:
我尝试添加:
global $wp_query;
status_header(200);
$wp_query->is_page = true;
$wp_query->is_404 = false;
Run Code Online (Sandbox Code Playgroud)
一开始没有帮助,然后我改变了我action('wp'..的action('init'...,它起作用了!但问题是我使用'wp'而不是'init'因为我需要get_query_var()在这个脚本上使用而我不能在使用'init'动作时使用。
php wordpress url-rewriting http-headers http-status-code-404
我正在尝试为我的不和谐机器人设置角色,但不断收到此错误:
discord.errors.Forbidden: 403 Forbidden (error code: 50013)
Run Code Online (Sandbox Code Playgroud)
我的代码:
@client.event
async def on_member_join(member):
guild = client.get_guild(688568885968109756)
role = discord.utils.get(member.guild.roles, id=689916456871133311)
await member.add_roles(role)
Run Code Online (Sandbox Code Playgroud) 我在 IIS 8.5 中设置了两个站点,为了简单起见,我们将其称为“测试 1”和“测试 2”。
测试 1可以在 访问test1.mydomain.com,测试 2可以在 访问test2.mydomain.com,但我希望它也可以在 访问test1.mydomain.com/app。
这不应该是重定向,而是重写 - 当用户查看测试2站点时,他们应该在浏览器地址栏中看到 URL test1.mydomain.com/app,并且所有路径都应该使用它作为基本 url,例如test1.mydomain.com/app/page1
我希望使用 URL 重写模块可以很简单,但似乎无法重写域,只能重写路径:
<rule name="test2" stopProcessing="true">
<match url="^app(/.*)?$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="test2.mydomain.com{R:1}" appendQueryString="false" />
</rule>
Run Code Online (Sandbox Code Playgroud)
将其添加到测试 1的 web.config会导致 404 错误,我猜是因为它将 URL 重写为test1.mydomain.com/test2.mydomain.com
如何重写 URL 以指向测试 2 站点?
我正在尝试解决与 Flutter Bloc 相关的问题。我正在编辑其他人的代码以使其与最新的 flutter_bloc 版本一起使用,但我无法这样做。有人可以重写我的代码以便我可以运行它吗?我看到了很多答案,但我无法理解如何修复我自己的代码。
这是 all_categories_bloc.dart 的完整代码
class AllCategoriesBloc extends Bloc<AllCategoriesEvent, AllCategoriesState> {
AllCategoriesBloc({
this.apiRepository,
}) : super(AllCategoriesInitial()) {
on<GetAllCategories>(_onGetAllCategories);
}
final ApiRepository apiRepository;
Future<void> _onGetAllCategories(
GetAllCategories event,
Emitter<AllCategoriesState> emit,
) async {
try {
emit(const AllCategoriesLoading());
final categoriesModel = await apiRepository.fetchCategoriesList();
emit(AllCategoriesLoaded(categoriesModel));
if (categoriesModel.error != null) {
emit(AllCategoriesError(categoriesModel.error));
}
} catch (e) {
emit(
const AllCategoriesError(
"Failed to fetch all categories data. Is your device online ?",
),
);
}
}
}
Run Code Online (Sandbox Code Playgroud)
all_categories_event.dart 的代码
abstract class AllCategoriesEvent …Run Code Online (Sandbox Code Playgroud)