Own portal

Do you have place a structure_void block under the portal, at layer 5?
 
So it can't work because the "execute" command is based on that ^^'
 
Place you in the portal, and do the command
Code:
setblock ~ 5 ~ structure_void
And do that for all the block of the portal where the player can walks.
 
Oh, you wish the system work for other portals? So it's not the good way... The other solution is to use an entity:
Code:
/summon minecraft:armor_stand ~ ~ ~ {NoGravity:1b,Invisible:1b,Tags:["ToLoc1"]}
You place it in your portal and execute this command in loop:
Code:
execute as @e[tag=ToLoc1] as @a at @s if block ~ ~-1 ~ obsidian run tp @s X Y Z
You can change the tag of the entity (ToLoc1) without forgot to change in the second command. You can also change "obsidian" by the block of your portal.
To do the return portal, do the same system but with an entity with an other tag than the first.